Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
hinkPHP 5.0的安裝
方式一:官網(wǎng)下載
官網(wǎng)地址:http://thinkphp.cn
方式二:git安裝
應(yīng)用項(xiàng)目:https://github.com/top-think/think
核心框架:https://github.com/top-think/framework
首先Clone項(xiàng)目倉(cāng)庫(kù):
git clone https://github.com/top-think/think project_name
然后再切換到項(xiàng)目文件夾(/project_name),安裝核心框架
git clone https://github.com/top-think/framework thinkphp
后續(xù)需要更新框架時(shí),只要切換到thinkphp文件夾并執(zhí)行
git pull https://github.com/top-think/framework
運(yùn)行ThinkPHP項(xiàng)目
在本地環(huán)境運(yùn)行ThinkPHP項(xiàng)目有兩種方式:
在計(jì)算機(jī)上搭建Apache服務(wù)器,將項(xiàng)目文件夾放到Apache中運(yùn)行
在安裝php環(huán)境的機(jī)器上執(zhí)行路由命令,自建服務(wù)器環(huán)境
在此使用第一種方法,第二中方法占不討論。
在瀏覽器上訪問(wèn)入口文件,訪問(wèn)項(xiàng)目:
http://localhost/project_name/public/index.php
配置數(shù)據(jù)庫(kù)
項(xiàng)目文件夾下有很多子文件夾,其中application文件夾存放的就是我們的業(yè)務(wù)代碼,所以在入門(mén)的時(shí)候幾乎只涉及到這個(gè)文件夾的內(nèi)容。https://github.com/top-think/framework
在開(kāi)始制作項(xiàng)目前我們先配置數(shù)據(jù)庫(kù),用編輯器打開(kāi) database.php,修改數(shù)據(jù)庫(kù)名稱(chēng)、用戶名和密碼就可以了。
'hostname'=> 'localhost', 'database'=> 'test', 'username'=> 'root', 'password'=> '123456',
了解目錄的結(jié)構(gòu)
application文件夾的目錄結(jié)構(gòu)是這樣的
+ index //Index模塊 + controller //控制器 + model //模型 + view //視圖 - .htaccess - command.php //命令行工具配置 - common.php //應(yīng)用公共函數(shù) - config.php //應(yīng)用公共配置 - database.php //數(shù)據(jù)庫(kù)配置 - route.php //路由配置 - tags.php //應(yīng)用行為擴(kuò)展定義
Index是系統(tǒng)為我們已經(jīng)創(chuàng)建好的默認(rèn)模塊,我們還能為應(yīng)用創(chuàng)建不同的模塊,比如說(shuō)后臺(tái)Admin模塊。
從模塊文件夾的結(jié)構(gòu)我們明顯地看出一個(gè)MVC的架構(gòu),而接下來(lái)我們要做的就是創(chuàng)建第一個(gè)控制器,模型和視圖。
創(chuàng)建第一個(gè)控制器
打開(kāi)controller文件夾我們可以發(fā)現(xiàn)系統(tǒng)已經(jīng)為我們創(chuàng)建了Index控制器,這也是我們?yōu)槭裁丛陧?xiàng)目創(chuàng)建完成后就可以通過(guò)瀏覽器訪問(wèn)的原因,在這里,我們創(chuàng)建一個(gè)新的控制器——Test控制器,我們?cè)赾ontroller文件夾新建一個(gè)test.php文件。
test.php 代碼如下
namespace app\index\controller;class Test { public function index(){ return 'Hello World!'; } }
namespace為這段代碼劃定了命名空間,避免了模塊間和類(lèi)庫(kù)間的命名沖突。
index()是Test控制器的一個(gè)方法,當(dāng)我們?cè)谕ㄟ^(guò)URL訪問(wèn)時(shí)沒(méi)有指定訪問(wèn)控制器的哪一個(gè)方法,就會(huì)默認(rèn)訪問(wèn)index方法。
當(dāng)然也可以為控制器添加初始化方法 _initialize(),它會(huì)在控制器調(diào)用方法時(shí)前被調(diào)用。
控制器一般不需要任何輸出,直接return數(shù)據(jù)就可以了。
現(xiàn)在我們?cè)L問(wèn)
http://localhost/project_name/public/index.php/Index/Test/index
可以發(fā)現(xiàn)頁(yè)面上輸出了 Hello World!
這里你應(yīng)該就發(fā)現(xiàn)了URL的規(guī)律了,在index.php后面加上/模塊名/控制器名/方法名就可以調(diào)用相應(yīng)的方法了。
創(chuàng)建第一個(gè)視圖
在服務(wù)器上展示一個(gè)網(wǎng)頁(yè)
在傳統(tǒng)的PHP中,我們很容易就習(xí)慣把html和標(biāo)簽和php語(yǔ)句混到一起。而在MVC結(jié)構(gòu)中,我們要把展現(xiàn)在瀏覽器上的部分和業(yè)務(wù)邏輯隔離開(kāi)來(lái),使得項(xiàng)目的可維護(hù)性更高。
ThinkPHP 5.0沒(méi)有為我們建立視圖文件夾,我們?cè)趇ndex模塊文件夾下建立一個(gè)view文件夾,然后在view文件夾下建立一個(gè)與控制器同名的Test文件夾,當(dāng)控制器Test需要調(diào)用模板時(shí),會(huì)在/index/view/Test中尋找。
這里我們?cè)赥est下創(chuàng)建一個(gè)index.html文件:
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <h1>Hello World!</h1></body></html>
然后我們修改控制器的代碼,引入think\View命名空間,并創(chuàng)建一個(gè)View的實(shí)例。
namespace app\index\controller;use think\View;class Test { public function index(){ $view=new View(); return $view->fetch('index'); } }
View類(lèi)中的fetch方法會(huì)找到此模塊中view文件夾下同名的Test文件夾,并根據(jù)參數(shù)找到index.html文件,將它渲染出來(lái),這時(shí)訪問(wèn)
http://localhost/project_name/public/index.php/Index/Test/index
可以看到網(wǎng)頁(yè)已經(jīng)顯示出來(lái)了。
當(dāng)然,如果方法和模板同名的話,就可以省略掉這個(gè)參數(shù)了,所以在這里
return $view->fetch('index');
可以寫(xiě)成
return $view->fetch();
將變量輸出到模板
我們需要把控制器中處理后的數(shù)據(jù)輸出到模板上,這時(shí)只要把變量綁定到$view對(duì)象成為它的屬性,就可以在模板中用花括號(hào)中將它輸出了。
/index/controller/Test.php
<?phpnamespace app\index\controller;use think\View;class Test { public function index(){ $view=new View(); $view->name='I love ThinkPHP'; return $view->fetch(); } }
/index/view/Test/index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <h1>{$name}</h1></body></html>
刷新頁(yè)面,即可看到效果。
在視圖中,可以用點(diǎn)運(yùn)算符(.)來(lái)訪問(wèn)數(shù)組的元素。
/index/controller/Test.php
<?phpnamespace app\index\controller;use think\View;class Test { public function index(){ $view=new View(); $view->person=array("name"=>"Tom","age"=>"23"); return $view->fetch(); } }
/index/view/Test/index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <h1>{$person.name}</h1> <h1>{$person.age}</h1></body></html>
當(dāng)然也可以使用
{$person["name"]}
和
{$person["age"]}
訪問(wèn)數(shù)據(jù)庫(kù)
在之前,我們已經(jīng)配置好了數(shù)據(jù)庫(kù),假定我們現(xiàn)在有一張student表(id為主鍵)
| id | name | age |
| -- | ----- | --- |
| 1 | Tom | 23 |
| 2 | Alice | 22 |
現(xiàn)在,在index文件夾下創(chuàng)建model文件夾,創(chuàng)建Student.php文件
<?php namespace app\index\Model; use think\Model;class Student extends Model{ protected $table="student"; }
這里注意Student模型類(lèi)要繼承think\Model類(lèi),我們可以事先通過(guò)
use think\Model;
來(lái)引入這個(gè)類(lèi)。在Student類(lèi)中,我們需要定義 $table 屬性告訴 ThinkPHP 這個(gè)模型匹配的是 student 表。在這里你也許會(huì)想到要為 Student 類(lèi)定義 id, name, age 這些屬性,不過(guò)在這里并不需要,等你調(diào)用這個(gè)模型的時(shí)候,ThinkPHP 會(huì)根據(jù)數(shù)據(jù)表的字段為 Student 的實(shí)例來(lái)添加這些屬性。接下來(lái),我們只要在控制器中引入Student類(lèi),就可以訪問(wèn)數(shù)據(jù)了。
<?phpnamespace app\index\controller;use app\index\model\Student;use think\View;class Test { public function index(){ $view=new View(); $student=Student::get(1); $view->student=$student; return $view->fetch(); } }
首先別忘了引入Student類(lèi)
use app\index\model\Student;
在 index 方法中,我們通過(guò) Student::get(1) 靜態(tài)獲取了 Student表中主鍵為1的數(shù)據(jù),并將它綁定在視圖上,我們嘗試在視圖輸出 student 的數(shù)據(jù)。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <h1>{$student.name}</h1> <h1>{$student.age}</h1></body></html>
大功告成,除了這種靜態(tài)調(diào)用的方式,還可以動(dòng)態(tài)建立Student實(shí)例,這樣就可以進(jìn)行更加豐富的查詢操作,這里就不詳細(xì)撰述了,有興趣的同學(xué)可以去翻看ThinkPHP 5.0文檔中關(guān)于模型和數(shù)據(jù)庫(kù)的部分。
成為一名ThinkPHP開(kāi)發(fā)者
在這里,你已經(jīng)創(chuàng)建了一個(gè)ThinkPHP應(yīng)用,建立了第一個(gè)控制器,通過(guò)關(guān)聯(lián)模型訪問(wèn)了數(shù)據(jù)庫(kù)的數(shù)據(jù),并將它們輸出到HTML模板上。你已經(jīng)完成了開(kāi)發(fā)ThinkPHP的第一步,當(dāng)然,這些知識(shí)對(duì)于你而言還是遠(yuǎn)遠(yuǎn)不夠的,接下來(lái)你需要通過(guò)更多的資料來(lái)熟悉這個(gè)框架,并通過(guò)不斷地翻看文檔,來(lái)了解ThinkPHP的各種方法和強(qiáng)大特性,最后附上ThinkPHP 5.0的文檔地址,加油啦。
http://www.kancloud.cn/manual/thinkphp5
BeyongCms系統(tǒng)基于ThinkPHP5.1框架的輕量級(jí)內(nèi)容管理系統(tǒng),適用于企業(yè)Cms, 個(gè)人站長(zhǎng)等,針對(duì)移動(dòng)App、小程序優(yōu)化;提供完善簡(jiǎn)潔的項(xiàng)目文檔,方便開(kāi)發(fā)人員進(jìn)行二次開(kāi)發(fā)。 支持模塊式開(kāi)發(fā),方便平臺(tái)擴(kuò)展及第三方進(jìn)行二次開(kāi)發(fā)。專(zhuān)注于個(gè)人站長(zhǎng)、中小企業(yè)客戶,提供基礎(chǔ)平臺(tái)功能及豐富的應(yīng)用擴(kuò)展, 支持PC和移動(dòng)場(chǎng)景,滿足企業(yè)建站系統(tǒng)、后臺(tái)管理框架、App后臺(tái)開(kāi)發(fā)、微信小程序開(kāi)發(fā)、小程序開(kāi)發(fā)框架、小程序API、小程序開(kāi)發(fā)等實(shí)際二次開(kāi)發(fā)場(chǎng)景。 其主要特性包括:
ThinkPHP5.1的運(yùn)行環(huán)境要求PHP5.6以上,建議使用PHP7.0及以上。
##軟件架構(gòu)
系統(tǒng)支持Linux/Window/Mac OS三大平臺(tái); 軟件架構(gòu)采用nginx/apache + PHP + Mysql(MariaDB) [+redis] 的經(jīng)典WEB架構(gòu),因?yàn)楹?jiǎn)單易于理解,且方便部署,門(mén)檻低; 理論上可支持SQL server, Oracle, Postgre SQL, MongoDB等,但未經(jīng)充分測(cè)試。
準(zhǔn)備好您的域名,并設(shè)置好指向; 安裝apache/nginx, php及Mysql; 創(chuàng)建數(shù)據(jù)庫(kù),并分配數(shù)據(jù)庫(kù)帳號(hào)密碼(不建議用root),當(dāng)前BeyongCms不支持幫助用戶創(chuàng)建數(shù)據(jù)庫(kù);
刪除data/install.lock文件,如果存在的話;
修改config/queue.config文件 'default'=> 'cms:queue', 改為 'default'=> 'cms:queue:your_project', 避免如果你安裝多份的BeyongCms導(dǎo)致的消息沖突;
Window下
start_queue.bat start_timer.bat
Linux下
sh start_queue.sh sh start_timer.bat
系統(tǒng)的目錄結(jié)構(gòu)如下:
thinkphp5的模板使用中,可以將需要引入的css等效果文件直接放在/public/static/下的對(duì)應(yīng)目錄中,在模板文件使用時(shí)可直接,
<link href="/static/admin/css/style.min.css?v=4.1.0" rel="stylesheet">,
或者是
{load file="/static/admin/css/bootstrap.css"}等方式引入,但是如果當(dāng)這些文件所在的目錄發(fā)送改變時(shí),在代碼中將有很大地方將要改動(dòng)。
這里可以直接在應(yīng)用配置文件中(/application/admin)下的config.php文件中添加
//模板引入js,css,img路徑常量設(shè)置
'view_replace_str'=> [
'__CSS__'=>'/static/admin/css',
'__JS__'=>'/static/admin/js',
'__IMG__'=>'/static/admin/img',
'__FONT__'=>'/static/admin/img',
]`
不建議在項(xiàng)目框架配置文件中修改(/application),這樣可以使得不同應(yīng)用(admin,home)等需要加載的的js,css常量的包含模塊路徑。
更多ThinkPHP相關(guān)技術(shù)文章,請(qǐng)?jiān)L問(wèn)ThinkPHP使用教程欄目進(jìn)行學(xué)習(xí)!
以上就是thinkphp如何配置css路徑的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注其它相關(guān)文章!
更多技巧請(qǐng)《轉(zhuǎn)發(fā) + 關(guān)注》哦!
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。