溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Thinkphp開源框架如何使用?

發(fā)布時間:2020-07-14 22:17:33 來源:網(wǎng)絡 閱讀:460 作者:jjrc521 欄目:數(shù)據(jù)庫

Thinkphp開源框架如何使用?

  (一)首先是準備工作下載thinkPHP框架最新版本,解壓縮到你將要開發(fā)的項目位置。操作演示如圖:

Thinkphp開源框架如何使用?

  其中index.php是入口文件,即所有的請求都要經(jīng)過此文件才能夠完成。Application 是應用目錄,在開發(fā)過程中,我們手動要操作的文件都在這個文件夾中。Public是資源文件目錄thinkPHP是框架目錄

  1,index.php入口文件

  2,何為入口文件,,即所有的功能操作都要經(jīng)過此文件才能夠完成。

  代碼如下:

  <?php

  // 檢測PHP環(huán)境

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

  // 開啟調試模式 建議開發(fā)階段開啟 部署階段注釋或者設為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,定義系統(tǒng)相關常量

  4,定義項目路徑

  5,定義調試模式和應用模式在第一次訪問入口文件之前,application文件夾沒有任何模塊,如圖:

Thinkphp開源框架如何使用?

  現(xiàn)在我們訪問入口文件,在瀏覽器中效果如下

Thinkphp開源框架如何使用?

  此時,application文件夾就自動生成了相應模塊如圖

Thinkphp開源框架如何使用?

  進入Home模塊,如圖

Thinkphp開源框架如何使用?

  其中標記的conf,controller,model,view是我們要操作的四個文件夾

  1,Conf文件夾,其中有config.Php是配置文件用來添加或修改一些配置參數(shù)2. Controller,model,view三個模塊體現(xiàn)了mvc開發(fā)模式,view模塊只負責呈現(xiàn)視圖效果,即用戶看到的網(wǎng)頁效果,model模塊就相當于是一個數(shù)據(jù)庫,通過實例化model對象,我們可以隨意對數(shù)據(jù)庫進行操作,controller控制器是模型和視圖之間連接的橋梁,從model中取出數(shù)據(jù)進行操作,然后將結果傳遞給視圖。1模型實例化,我把她理解為鏈接數(shù)據(jù)庫中具體的某個表。如,在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數(shù)組定義的是數(shù)據(jù)庫鏈接信息,$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","系統(tǒng)正忙,請重新注冊");

  }

  }else{

  $this->assign("error","對不起,此用戶名已經(jīng)注冊");

  }

  }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","系統(tǒng)正忙,請重新更改密碼");

  }

  }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'){

  if($_POST['orderhidden']=='a'){

  if(!empty($_POST['content'])){

  $data['content']=$_POST['content'];

  $data['user_id']=$user_id;

  $r=$list->add($data);

  if($r){

  $this->assign("message","添加成功");

  }else{

  $this->assign("message","添加失敗");

  }

  }else{

  $this->assign("message","請輸入內容");

  }

  }

  if($_POST['orderhidden']=='b'){

  $list_id=$_POST['listhidden'];

  $r=$list->where("list_id='$list_id'")->delete();

  if($r){

  $this->assign("message","刪除成功");

  }else{

  $this->assign("message","請重新點擊刪除");

  }

  }

  }

  $r=$list->field("content,list_id")->where("user_id='$user_id'")->select();

  /*if(!empty($r)){

  $num++;

  }

  $this->assign("num",$num);*/

  $this->assign("select",$r);

  $this->display();

  }

  他的模板文件index.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>{$title}</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  </head>

  <body>

  <h2>{$bodytitle}</h2>

  <!--<a href="{:U('Home/Index/login')}" >登錄</a>-->

  </br>

  <!--<a href="{:U('Home/Index/register')}" >注冊</a>-->

  {$link2}

  </br>

  {$link3}

  </br>

  </body>

  </html>

  Register.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>登錄頁面</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布爾教育 http://www.itbool.com" />

  </head>

  <body>

  <form action="register" method="POST">

  用戶名:<br />

  <input type="text" name="username" />

  <br />

  密碼:<br />

  <input type="password" name="password" />

  請由字母數(shù)字或下劃線組成,長度為5-21

  <br />

  <input type="submit" value="注冊" />

  <input type="reset" value="重置">

  </form>

  <a href="{:U('Home/Index/index')}">返回首頁</a>

  <br/>

  <a href="{:U('Home/Index/login')}">登錄</a>

  </br>

  </br>

  {$error}

  </br>

  </body>

  </html>

  Login.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>登錄頁面</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布爾教育 http://www.itbool.com" />

  </head>

  <body>

  <form action="login" method="POST">

  用戶名:<br />

  <input type="text" name="username" />

  <br />

  密碼:<br />

  <input type="password" name="password" />

  <br />

  <input type="submit" value="登錄" />

  </br>

  <input type="reset" value="重置">

  </form>

  <a href="{:U('Home/Index/changepassword')}">更改密碼</a>

  <br />

  <a href="{:U('Home/Index/index')}">返回首頁</a>

  </br>

  <a href="{:U('Home/Index/logout')}">注銷</a>

  </br>

  {$error}

  {$logout}

  {$error1}

  </html>

  Changepassword.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>更改密碼頁面</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布爾教育 http://www.itbool.com" />

  </head>

  <body>

  <form action="changepassword" method="POST">

  新密碼:<input type="password" name="newpassword" />

  <br />

  <input type="submit" value="確定更改" />

  <input type="reset" value="重置" />

  </form>

  <a href="{:U('Index/login')}">登錄</a>

  <br />

  <a href="{:U('Index/index')}">返回首頁</a>

  </br>

  {$error}

  </br>

  {$error1}

  </br>

  {$error2}

  </body>

  </html>

  Planlist.html

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>計劃列表</title>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta name="deion" content="布爾教育 http://www.itbool.com" />

  </head>

  <body>

  <h3>{$username}歡迎來到你的計劃列表</h3>

  {$message}

  <table border=3>

  <foreach name="select" item="list">

  <tr>

  <td>

  {$list.content}

  <form action="planlist" method="POST">

  <input type="hidden" name="listhidden" value="{$list.list_id}" />

  <input type="hidden" name="orderhidden" value="b" />

  <input type="submit" value="刪除" />

  </form>

  </td>

  </tr>

  </foreach>

  <tr>

  <td>

  <form action="planlist" method="POST">

  內容:<textarea name="content" cols="30" rows="3"></textarea>

  <br />

  <input type="submit" value="添加" />

  <input type="hidden" name="orderhidden" value="a" />

  </form>

  </td>

  </tr>

  </table>

  </br>

  <a href="{:U('Home/Index/changepassword')}">更改密碼</a>

  <br />

  <a href="{:U('Home/Index/index')}">返回首頁</a>

  </br>

  <a href="{:U('Home/Index/logout')}">注銷</a>

  </br>

  </body>

  </html>

  5.下面就以上代碼中的知識點進行講解1) URL的動態(tài)生成:利用thinkPHP內置的U方法。當我點擊不同鏈接的時候,各個模塊位置在發(fā)生變化,因此固定的路徑是不可行的,路徑必須是可以變化的。在控制器中,U方法用法如下:

  $planlist=U('Home/Index/planlist');

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

  在模板文件中,U方法用法如下

  <a href="{:U('Home/Index/logout')}">注銷</a>

  1,概括一下為U(模塊/控制器/方法),若省略模塊名,則默認為當前模塊名稱

  2,實例化模型類:用D方法或者M方法

  $user=D("usermessage");

  $list=D("listmessage");

  3)CURD操作和連貫操作方法

  (1 )create方法:用于創(chuàng)建數(shù)據(jù)對象,最典型的應用就是自動根據(jù)表單數(shù)據(jù)創(chuàng)建數(shù)據(jù)對象,但數(shù)據(jù)對象是保存在內存中的,并沒有實際寫入到數(shù)據(jù)庫中,知道使用add或save方法

  (2)save方法:

  $user->where("user_id='$user_id'")->save($data);

  返回值是影響的記錄行數(shù)

  返回值是自動增長的主鍵,即一個整型數(shù)據(jù)

  (3)select方法:用于數(shù)據(jù)讀取,即獲取數(shù)據(jù)表中的多行記錄,

  $user->where("name='{$data['name']}'")->select();

  若查詢出錯,返回值是false,若查詢結果為空,則返回null,否則返回二維數(shù)組

  (4)delete方法:用于數(shù)據(jù)刪除

  $list->where("list_id='$list_id'")->delete();

  返回值是刪除的記錄行數(shù)

  這四個操作稱為CURD操作,是對數(shù)據(jù)庫的基本操作

  (5)data方法:用于設置當前要操作的數(shù)據(jù)對象的值

  $data['password']=$_POST['password'];

  (6)add方法用于數(shù)據(jù)寫入

  $user->add($data);

  (7)where方法,主要用于添加數(shù)據(jù)庫操作的限制條件

  $user->where("user_id='$user_id'")->save($data);

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

  (8)field方法:選擇要返回或操作的字段

  $list->field("content,list_id")->where("user_id='$user_id'")->select();

  4) session的設置與刪除

  session("username","$username");

  session('user_id',$r1['user_id']);

  session(null);

  5)模板文件:thinkphp內置了一個基于XML的模板引擎thinktemplate,,在變量輸出和制定模板文件時,與smarty模板引擎相同

  $this->assign()

  $this->display()

  我還用到了一個循環(huán)標簽foreach ,用于計劃列表的輸出

  方法中的變量輸出:$this->assign("select",$r);

  模板文件中的循環(huán)輸出

  <foreach name="select" item="list">

  <tr>

  <td>

  {$list.content}

  <form action="planlist" method="POST">

  <input type="hidden" name="listhidden" value="{$list.list_id}" />

  <input type="hidden" name="orderhidden" value="b" />

  <input type="submit" value="刪除" />

  </form>

  </td>

  </tr>


程序員杭州軟件測試杭州APP開發(fā)杭州PHP工程師

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI