Thinkphp开源框架如何使用?

图片 72

图片 1

图片 2

IndexAction代码:

  (一)首先是准备工作下载thinkPHP框架最新版本,解压缩到你将要开发的项目位置。杭州php操作演示如图:

图片 3class IndexAction extends Action
图片 4{
图片 5    function Index()
图片 6    {
图片 7        $this->display();
图片 8    }
图片 9    
图片 10    function ajaxauto(){//自动完成action
图片 11        $tagname=$_POST[‘tagname’];
图片 12        $dao=D(‘tpltags’);
图片 13        $r=$dao->findAll(“tagname like ‘%$tagname%'”); 
图片 14        $this->assign(‘list’,$r);
图片 15        $this->display();
图片 16        
图片 17    }
图片 18    function showresult(){//显示结果action
图片 19        $tagname=$_POST[‘tagname’];
图片 20        $dao=D(‘tpltags’);
图片 21        $r=$dao->findAll(“tagname like ‘%$tagname%'”);
图片 22        $this->assign(‘list’,$r);
图片 23        $this->display();
图片 24        
图片 25    }
图片 26}

图片 27

首页模板核心:

  其中index.php是入口文件,即所有的请求都要经过此文件才能够完成。Application
是应用目录,在开发过程中,我们手动要操作的文件都在这个文件夹中。Public是资源文件目录thinkPHP是框架目录

图片 28<tagLib name=’cx,html’ />
图片 29<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
图片 30<html xmlns=”http://www.w3.org/1999/xhtml"&gt;
图片 31<head>
图片 32<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
图片 33<html:link type=’css’ href=’../Public/css/autocomplete.css’ />
图片 34<html:link type=’js’ href=’../Public/js/prototype.js’ />
图片 35<html:link type=’js’ href=’../Public/js/effects.js’ />
图片 36<html:link type=’js’ href=’../Public/js/controls.js’ />
图片 37<!– 上面三个js加载顺序为prototype effects controls 不能乱–>
图片 38图片 39<SCRIPT LANGUAGE=”JavaScript”>图片 40
图片 41<!–
图片 42// 
图片 43
图片 44window.onload = function ()
图片 45图片 46图片 47{
图片 48图片 49    new Ajax.Autocompleter(“tagname”,”autocomplete”, “__URL__/ajaxauto”, 图片 50{});
图片 51    
图片 52}
图片 53
图片 54
图片 55图片 56function showResults()图片 57{
图片 58    
图片 59图片 60    new Ajax.Updater(‘description’, ‘__URL__/showresult’, 图片 61{method:’post’, postBody:’tagname=’+$F(‘tagname’)});
图片 62    new Effect.Appear(‘description’);
图片 63    
图片 64}
图片 65
图片 66//–>
图片 67</SCRIPT>
图片 68

  1,index.php入口文件

下载地址:
/Files/webeasy/autosearch.rar (仅app 不含框架 框架请到thinkphp.cn下载)

  2,何为入口文件,,即所有的功能操作都要经过此文件才能够完成。


  代码如下:

  <?php

  // 检测PHP环境

  if(version_compare(PHP_VERSION,’5.3.0′,'<‘)) die(‘require PHP
> 5.3.0 !’);

  // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false

  define(‘APP_DEBUG’,True);

  // 定义应用目录

  define(‘APP_PATH’,’./Application/’);

  // 引入ThinkPHP入口文件

  require ‘D:/Dev
Apps/xampp/htdocs/sunyan2015/017/ThinkPHP/ThinkPHP.php’;

  // 亲^_^ 后面不需要任何代码了 就是如此简单

  1,从上述代码中 可以看出入口文件主要完成:

  2,载入thinkPHP框架入口文件

  3,定义系统相关常量

  4,定义项目路径

  5,定义调试模式和应用模式在第一次访问入口文件之前,application文件夹没有任何模块,如图:

图片 69

  现在我们访问入口文件,在浏览器中效果如下

图片 70

  此时,application文件夹就自动生成了相应模块如图

图片 71

  进入Home模块,如图

图片 72

  其中标记的conf,controller,model,view是我们要操作的四个文件夹

  1,Conf文件夹,其中有config.Php是配置文件用来添加或修改一些配置参数2.
Controller,model,view三个模块体现了mvc开发模式,view模块只负责呈现视图效果,即用户看到的网页效果,model模块就相当于是一个数据库,通过实例化model对象,我们可以随意对数据库进行操作,controller控制器是模型和视图之间连接的桥梁,从model中取出数据进行操作,然后将结果传递给视图。1模型实例化,我把她理解为链接数据库中具体的某个表。如,在TODOlist中,我建立了两个表,usermessage和listmessage,所以我建立了两个模型类。userMessageModel和listmessageModel,代码如下:

  <?php

  namespace Home\Model;

  use Think\Model;

  class usermessageModel extends Model{

  protected $connection=array(

  ’DB_TYPE’=>’mysql’,

  ’DB_USER’=>’root’,

  ’DB_PWD’=>’123456′,

  ’DB_HOST’=>’localhost’,

  ’DB_PORT’=>’3306′,

  ’DB_NAME’=>’todolist’,

  ’DB_CHARSET’=>’utf8′,

  ’DB_PREFIX’=>’ ‘,

  );

  protected $tablePrefix=”;

  }

  ?>

  <?php

  namespace Home\Model;

  use Think\Model;

  class listmessageModel extends Model{

  protected $connection=array(

  ’DB_TYPE’=>’mysql’,

  ’DB_USER’=>’root’,

  ’DB_PWD’=>’123456′,

  ’DB_HOST’=>’localhost’,

  ’DB_PORT’=>’3306′,

  ’DB_NAME’=>’todolist’,

  ’DB_CHARSET’=>’utf8′,

  ’DB_PREFIX’=>’ ‘,

  );

  protected $tablePrefix=”;

  }

  ?>

  其中$connection数组定义的是数据库链接信息,$tablePrefix定义的是标的前缀为空。

  3.
控制器,其实就是一个类,由方法组成。如TODOlist我定义了五个方法。方法中具体代码省略,主要先看一下架构:

  <?php

  namespace Home\Controller;

  use Think\Controller;

  class IndexController extends Controller {

  public function index(){

  }

  public function register(){

  }

  public function login(){

  }

  public function logout(){

  }

  public function planlist(){

  }

  }

  ?>

  在view模块中,一个控制器(一个类),对应一个文件夹,文件夹的名称为类的名称,此类的名称为Index,则文件夹的名称为Index,然后在此文件夹中,每个方法对应一个html文件,这是方法的模板文件。如index方法对应index.html模板文件。

  4.

  public function index(){

  $title=”欢迎页面”;

  $bodytitle=”欢迎访问todolist”;

  $this->assign(“bodytitle”,”$bodytitle”);

  $username=session(“username”);

  if(empty($username)){

  $login=U(‘Home/Index/login’);

  $register=U(‘Home/Index/register’);

  $this->assign(“link1″,”<a
href=\”$login\”>登录</a>”);

  $this->assign(“link2″,”<a
href=\”$register\”>注册</a>”);

  }else{

  $logout=U(‘Home/Index/logout’);

  $changepassword=U(‘Home/Index/changepassword’);

  $planlist=U(‘Home/Index/planlist’);

  $this->assign(“link1″,”<a
href=\”$logout\”>注销</a>”);

  $this->assign(“link2″,”<a
href=\”$changepassword\”>更改密码</a>”);

  $this->assign(“link3″,”<a
href=\”$planlist\”>你的列表</a>”);

  }

  $this->display();

  }

  public function register(){

  $user=D(“usermessage”);

  $error=array();

  if($_SERVER[‘REQUEST_METHOD’]==’POST’){

  if(!empty($_POST[‘username’])){

  $data[‘name’]=$_POST[‘username’];

  }else{

  $error[]=”请输入用户名”;

  }

  if(!empty($_POST[‘password’])){

  $data[‘password’]=$_POST[‘password’];

  }else{

  $error[]=”请输入密码”;

  }

  if(empty($error)){

  $r=$user->where(“name='{$data[‘name’]}'”)->select();

  if(empty($r)){

  $r1=$user->add($data);

  if($r1){

  $this->assign(“error”,”恭喜你,注册成功”);

  }else{

  $this->assign(“error”,”系统正忙,请重新注册”);

  }

  }else{

  $this->assign(“error”,”对不起,此用户名已经注册”);

  }

  }else{

  foreach($error as $msg){

  $this->assign(“error”,”$msg”);

  }

  }

  }

  $this->display();

  }

  public function login(){

  $user=D(“usermessage”);

  $user->create();

  $error=array();

  if($_SERVER[‘REQUEST_METHOD’]==’POST’){

  if(!empty($_POST[‘username’])){

  $username=$_POST[‘username’];

  }else{

  $error[]=”请输入用户名”;

  }

  if(!empty($_POST[‘password’])){

  $password=$_POST[‘password’];

  }else{

  $error[]=”请输入密码”;

  }

  if(empty($error)){

  $r=$user->where(“name=’$username'”)->select();

  if(!empty($r)){

  $r1=$user->where(“name=’$username’ and
password=’$password'”)->find();

  if(!empty($r1)){

  $this->assign(“error”,”登录成功”);

  $this->assign(“error1″,”{$r1[‘user_id’]}”);

  session(“username”,”$username”);

  session(‘user_id’,$r1[‘user_id’]);

  } else{

  $this->assign(“error”,”密码错误,请重新输入”);

  }

  }else{

  $this->assign(“error”,”对不起,此用户名并未注册”);

  }

  }else{

  foreach($error as $msg){

  $this->assign(“error”,”$msg”);

  }

  }

  }

  $this->display();

  }

  public function logout(){

  $username=session(‘username’);

  if(!empty($username)){

  session(null);

  $username=session(‘username’);

  if(empty($username)){

  $this->assign(‘logout’,’注销成功’);

  }else{

  $this->assign(‘logout’,’注销失败’);

  }

  }else{

  $this->assign(‘logout’,’您还没有登录’);

  }

  $this->display(login);

  }

  public function changepassword(){

  $error=array();

  $user=D(‘usermessage’);

  $username=session(‘username’);

  $user_id=session(‘user_id’);

  if(!empty($username)){

  if($_SERVER[‘REQUEST_METHOD’]==’POST’){

  if(!empty($_POST[‘newpassword’])){

  $data[‘password’]=$_POST[‘newpassword’];

  //$user->password==$_POST[‘newpassword’];

  }else{

  $error[]=”请输入密码”;

  }

  if(empty($error)){

  $r=$user->where(“user_id=’$user_id'”)->save($data);

  $this->assign(“error2″,”$r”);

  if($r){

  $this->assign(“error”,”恭喜你,密码更改成功”);

  }else{

  $this->assign(“error”,”系统正忙,请重新更改密码”);

  }

  }else{

  foreach($error as $msg){

  $this->assign(“error”,”$msg”);

  }

  }

  }

  }else{

  $this->assign(‘error’,’请先登录’);

  }

  $this->display();

  }

  public function planlist(){

  $username=session(‘username’);

  $user_id=session(“user_id”);

  $this->assign(“username”,”$username”);

  //$user=D(“usermessage”);

  $list=D(“listmessage”);

  $list->create();

  if($_SERVER[‘REQUEST_METHOD’]==’POST’){