91精产品自偷自偷综合官网版下载-91精产品自偷自偷综合下-91精品-91精品91久久久-91精品成人-91精品成人www

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

Thinkphp開(kāi)源框架如何使用?

Thinkphp開(kāi)源框架如何使用?

成都創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)按需規(guī)劃網(wǎng)站,是成都網(wǎng)站建設(shè)公司,為成都PVC花箱提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺(tái)程序開(kāi)發(fā)等。成都網(wǎng)站設(shè)計(jì)熱線(xiàn):18982081108

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

Thinkphp開(kāi)源框架如何使用?

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

1,index.php入口文件

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

代碼如下:

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

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

// 開(kāi)啟調(diào)試模式 建議開(kāi)發(fā)階段開(kāi)啟 部署階段注釋或者設(shè)為false

define('APP_DEBUG',True);

// 定義應(yīng)用目錄

define('APP_PATH','./Application/');

// 引入ThinkPHP入口文件

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

// 親^_^ 后面不需要任何代碼了 就是如此簡(jiǎn)單

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

2,載入thinkPHP框架入口文件

3,定義系統(tǒng)相關(guān)常量

4,定義項(xiàng)目路徑

5,定義調(diào)試模式和應(yīng)用模式在第一次訪(fǎng)問(wèn)入口文件之前,application文件夾沒(méi)有任何模塊,如圖:

Thinkphp開(kāi)源框架如何使用?

現(xiàn)在我們?cè)L問(wèn)入口文件,在瀏覽器中效果如下

Thinkphp開(kāi)源框架如何使用?

此時(shí),application文件夾就自動(dòng)生成了相應(yīng)模塊如圖

Thinkphp開(kāi)源框架如何使用?

進(jìn)入Home模塊,如圖

Thinkphp開(kāi)源框架如何使用?

其中標(biāo)記的conf,controller,model,view是我們要操作的四個(gè)文件夾

1,Conf文件夾,其中有config.Php是配置文件用來(lái)添加或修改一些配置參數(shù)2. Controller,model,view三個(gè)模塊體現(xiàn)了mvc開(kāi)發(fā)模式,view模塊只負(fù)責(zé)呈現(xiàn)視圖效果,即用戶(hù)看到的網(wǎng)頁(yè)效果,model模塊就相當(dāng)于是一個(gè)數(shù)據(jù)庫(kù),通過(guò)實(shí)例化model對(duì)象,我們可以隨意對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,controller控制器是模型和視圖之間連接的橋梁,從model中取出數(shù)據(jù)進(jìn)行操作,然后將結(jié)果傳遞給視圖。1模型實(shí)例化,我把她理解為鏈接數(shù)據(jù)庫(kù)中具體的某個(gè)表。如,在TODOlist中,我建立了兩個(gè)表,usermessage和listmessage,所以我建立了兩個(gè)模型類(lèi)。userMessageModel和listmessageModel,代碼如下:

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='';

}

?>

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ù)庫(kù)鏈接信息,$tablePrefix定義的是標(biāo)的前綴為空。

3. 控制器,其實(shí)就是一個(gè)類(lèi),由方法組成。如TODOlist我定義了五個(gè)方法。方法中具體代碼省略,主要先看一下架構(gòu):

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模塊中,一個(gè)控制器(一個(gè)類(lèi)),對(duì)應(yīng)一個(gè)文件夾,文件夾的名稱(chēng)為類(lèi)的名稱(chēng),此類(lèi)的名稱(chēng)為Index,則文件夾的名稱(chēng)為Index,然后在此文件夾中,每個(gè)方法對(duì)應(yīng)一個(gè)html文件,這是方法的模板文件。如index方法對(duì)應(yīng)index.html模板文件。

4.

public function index(){

$title="歡迎頁(yè)面";

$bodytitle="歡迎訪(fǎng)問(wèn)todolist";

$this->assign("bodytitle","$bodytitle");

$username=session("username");

if(empty($username)){

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

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

$this->assign("link1","登錄");

$this->assign("link2","注冊(cè)");

}else{

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

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

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

$this->assign("link1","注銷(xiāo)");

$this->assign("link2","更改密碼");

$this->assign("link3","你的列表");

}

$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[]="請(qǐng)輸入用戶(hù)名";

}

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

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

}else{

$error[]="請(qǐng)輸入密碼";

}

if(empty($error)){

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

if(empty($r)){

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

if($r1){

$this->assign("error","恭喜你,注冊(cè)成功");

}else{

$this->assign("error","系統(tǒng)正忙,請(qǐng)重新注冊(cè)");

}

}else{

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

}

}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[]="請(qǐng)輸入用戶(hù)名";

}

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

$password=$_POST['password'];

}else{

$error[]="請(qǐng)輸入密碼";

}

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","密碼錯(cuò)誤,請(qǐng)重新輸入");

}

}else{

$this->assign("error","對(duì)不起,此用戶(hù)名并未注冊(cè)");

}

}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','注銷(xiāo)成功');

}else{

$this->assign('logout','注銷(xiāo)失敗');

}

}else{

$this->assign('logout','您還沒(méi)有登錄');

}

$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[]="請(qǐng)輸入密碼";

}

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)正忙,請(qǐng)重新更改密碼");

}

}else{

foreach($error as $msg){

$this->assign("error","$msg");

}

}

}

}else{

$this->assign('error','請(qǐng)先登錄');

}

$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","請(qǐng)輸入內(nèi)容");

}

}

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","請(qǐng)重新點(diǎn)擊刪除");

}

}

}

$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

{$title}

{$bodytitle}


{$link2}


{$link3}


Register.html

登錄頁(yè)面

用戶(hù)名:


密碼:

請(qǐng)由字母數(shù)字或下劃線(xiàn)組成,長(zhǎng)度為5-21


返回首頁(yè)


登錄



{$error}


Login.html

登錄頁(yè)面

用戶(hù)名:


密碼:



更改密碼


返回首頁(yè)


注銷(xiāo)


{$error}

{$logout}

{$error1}

Changepassword.html

更改密碼頁(yè)面

新密碼:


登錄


返回首頁(yè)


{$error}


{$error1}


{$error2}

Planlist.html

計(jì)劃列表

{$username}歡迎來(lái)到你的計(jì)劃列表

{$message}

{$list.content}

內(nèi)容:



更改密碼


返回首頁(yè)


注銷(xiāo)


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

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

$this->assign("link3","你的列表");

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

注銷(xiāo)

1,概括一下為U(模塊/控制器/方法),若省略模塊名,則默認(rèn)為當(dāng)前模塊名稱(chēng)

2,實(shí)例化模型類(lèi):用D方法或者M(jìn)方法

$user=D("usermessage");

$list=D("listmessage");

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

(1 )create方法:用于創(chuàng)建數(shù)據(jù)對(duì)象,最典型的應(yīng)用就是自動(dòng)根據(jù)表單數(shù)據(jù)創(chuàng)建數(shù)據(jù)對(duì)象,但數(shù)據(jù)對(duì)象是保存在內(nèi)存中的,并沒(méi)有實(shí)際寫(xiě)入到數(shù)據(jù)庫(kù)中,知道使用add或save方法

(2)save方法:

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

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

返回值是自動(dòng)增長(zhǎng)的主鍵,即一個(gè)整型數(shù)據(jù)

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

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

若查詢(xún)出錯(cuò),返回值是false,若查詢(xún)結(jié)果為空,則返回null,否則返回二維數(shù)組

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

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

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

這四個(gè)操作稱(chēng)為CURD操作,是對(duì)數(shù)據(jù)庫(kù)的基本操作

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

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

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

$user->add($data);

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

$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的設(shè)置與刪除

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

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

session(null);

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

$this->assign()

$this->display()

我還用到了一個(gè)循環(huán)標(biāo)簽foreach ,用于計(jì)劃列表的輸出

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

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

{$list.content}

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


分享標(biāo)題:Thinkphp開(kāi)源框架如何使用?
瀏覽地址:http://www.yuzhuanjia.cn/article/jgcscp.html
主站蜘蛛池模板: 91制片厂果冻星空传媒战争 | 东京热欧美久久久 | 国产1区在线看你懂得 | 99热在线看| 91亚洲精品无码观看 | 91探花国产| 午夜wwww | 99久久久国产精品免费老妇女 | 午夜电影院理论电影院 | 97在线精品视频 | av无码乱码国产 | 91在线无码精码秘入口 | 91精品国产福利在 | 午夜手机福利视频 | 一区二区在线观看视频 | av无码小缝喷白浆在线观看 | av无码进入 | 97久久精品伊人 | 91精品福利一区二区 | 92看看福利1000集合集免费 | 国产av无码不卡 | 动漫精品一区二区三区在线 | av麻豆出品免费在线观看 | 波多野成人 | 午夜国产片 | 二区视频在线观看 | 午夜爱爱毛片xxxx视频免费看 | 91久久人人妻人人澡人人爽 | 91人妻视频 | 91成人午夜性a | 对白精彩国产在线视频 | 1000部夫妻午夜免费 | 国产crm系统91| va亚洲国产欧美日韩另类 | 99精品人妻无码专区在线视 | 午夜欧美日韩视频 | av在线影院 | www天天干com | 午夜色情影视免费播放 | 午夜福利国产成人a∨在线观看 | 97欧美在线看欧美视频免费 |