① 本人新手,剛安裝thinkphp,怎麼不成功
快速入門(一):基礎
簡介
ThinkPHP是一個快速、簡單的基於MVC和面向對象的輕量級PHP開發框架,遵循Apache2開源協議發布,從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡的代碼的同時,尤其注重開發體驗和易用性,並且擁有眾多的原創功能和特性,為WEB應用開發提供了強有力的支持。
本快速入門教程針對3.2.3最新版本製作,雖然大部分特性3.2版本同樣存在,但是強烈建議你使用3.2.3版本來學習本入門教程。
下載
ThinkPHP最新版本可以在官方網站(http://thinkphp.cn/down/framework.html)下載。
最新的3.2.3版本下載地址:http://www.thinkphp.cn/down/610.html。
如果你希望保持最新的更新,可以通過github獲取當前最新的版本(完整版)。
Git獲取地址列表(你可以選擇一個最快的地址):
Github:https://github.com/liu21st/thinkphp
Oschina:http://git.oschina.net/liu21st/thinkphp.git
Code:https://code.csdn.net/topthink2011/ThinkPHP
Coding:https://git.coding.net/liu21st/thinkphp.git
wwwWEB部署目錄(或者子目錄)
├─index.php入口文件
├─README.mdREADME文件
├─composer.jsonComposer定義文件
├─Application應用目錄
├─Public資源文件目錄
└─ThinkPHP框架目錄
3.2版本開始相比之前的版本自帶了一個完整的應用目錄結構(Application)和默認的應用入口文件(index.php),開發人員可以在這個基礎之上靈活調整(目錄名稱和位置)。其中,Application和Public目錄下面都是空的,而README.md和composer.josn文件僅用於說明,實際部署的時候可以刪除。
其中,ThinkPHP為框架核心目錄,其目錄結構如下:
├─ThinkPHP框架系統目錄(可以部署在非web目錄下面)
│├─Common核心公共函數目錄
│├─Conf核心配置目錄
│├─Lang核心語言包目錄
│├─Library框架類庫目錄
││├─Think核心Think類庫包目錄
││├─Behavior行為類庫目錄
││├─OrgOrg類庫包目錄
││├─Vendor第三方類庫目錄
││├─...更多類庫目錄
│├─Mode框架應用模式目錄
│├─Tpl系統模板目錄
│├─LICENSE.txt框架授權協議文件
│├─logo.png框架LOGO文件
│├─README.txt框架README文件
│└─index.php框架入口文件
框架核心目錄的結構無需改變,但框架的目錄名稱(ThinkPHP)可以在應用入口文件中隨意更改。
入口文件
在開始之前,你需要一個Web伺服器和PHP運行環境,如果你暫時還沒有,我們推薦使用集成開發環境WAMPServer(是一個集成了Apache、PHP和MySQL的開發套件,而且支持多個PHP版本、MySQL版本和Apache版本的切換)來使用ThinkPHP進行本地開發和測試。
3.2版本開始框架自帶了一個應用入口文件,默認內容如下:
define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
這段代碼的作用就是定義應用目錄和載入ThinkPHP框架的入口文件,這是所有基於ThinkPHP開發應用的第一步。
然後,在瀏覽器中訪問運行後我們會看到歡迎頁面:
namespaceHomeController;
useThinkController;
{
publicfunctionindex(){
$Data=M('Data');//實例化Data數據模型
$result=$Data->find(1);
$this->assign('result',$result);
$this->display();
}
}
這里用到了M函數,是ThinkPHP內置的實例化模型的方法,而且用M方法實例化模型不需要創建對應的模型類,你可以理解為M方法是直接在操作底層的Model類,而Model類具備基本的CURD操作方法。
M('Data') 實例化後,就可以對think_data數據表(think_是我們在項目配置文件中定義的數據表前綴)進行操作(包括CURD)了,M函數的用法還有很多,我們以後會深入了解。
定義好控制器後,我們修改模板文件,添加數據輸出標簽如下:
<html><head><title></title></head><body>{$result.id}--{$result.data}</body></html>
模板標簽的用法和Smarty類似,就是用於輸出數據的欄位,這里就表示輸出think_data表的id和data欄位的值。
我們訪問會輸出:
1--thinkphp
如果發生錯誤,檢查你是否開啟了調試模式或者清空Runtime目錄下面的緩存文件。
如果你看到了上面的輸出結果,那麼恭喜你已經拿到了入門ThinkPHP的鑰匙!
② 程序員來回答吧 coding 是指什麼
納尼 那我的理解正好相反 我理解的coding是寫代碼實現功能的
③ php怎樣寫開發方案
主要是看要建什麼網站
方案的確定主要從以下幾個方面考慮
1.網站的功能需求
2.網站面向的客戶群
3.網站的負載
④ 關於php面向對象的問題,求對框架原理了解的大神。
自己設計框架學習意義遠大於實用意義,設計的過程中可能會浪費你不少時間,而且你可能以後永遠不會(99%)用到自己設計的框架,但是對你深入了解PHP還是很有幫助的。
(我自己也有在設計一個框架,如有興趣,可以發給你一起研究)
大部分PHP MVC框架中心思想都是一樣的:
首先要單文件入口(index.php),就是所有的訪問都通過一個文件來控制,這樣就能控制流程了。要實現這個功能就需要apache或者nginx的設置來配合了。以apache為例,最經典的.htacess:
<IfMolemod_rewrite.c>
RewriteEngineOn
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-f
RewriteRule^(.*)$index.php?_url=$1[QSA,L]
</IfMole>
此文件的作用就是如果如果訪問的文件或者文件夾存在的話就直接調用文件(用來處理訪問/public/css, /public/js之類的請求),不然的話就將請求轉發給index.php。此時index.php可以調用$_GET['_url'] 來獲得請求。
#一般框架遵循的規則是:[地址]/[控制器名字]/[方法名字]/[參數/參數]
#請求:localhost/test/helloworld/china/shanghai
#在index.php里就可以訪問$_GET['_url']來獲得字元串:/test/helloworld/china/shanghai
然後將字元串explode()成array,根據默認規則獲得以下信息(如果願意可以自己寫一個路由而不用默認方法解析路徑)
控制器:test
方法:helloworld
參數:china, shanghai
先在test.php中:
classtest
{
publicfunctionhelloworld($country,$city)
{
echo'Hello,Iamfrom',$country,$city;
}
}
然後在index.php中:
#這里可以自己定義一個__autoload方法來讓PHP自行require_once()class文件,就不用自己一個一個include()了。
#初始化一個控制器實例:
$test=newtest();
#調用控制器中的方法,並遞交參數
#請查閱PHP函數call_user_func_array()的使用方法
call_user_func_array(array($test,'helloworld'),array('china','shanghai'));
這樣就完成了一個簡單的MVC框架,剩下的就是繼續完善他,你可能需要學習以下知識:
PHP __autoload()的設計和命名空間(namespace)的設計
各種軟體設計模式:singleton, dependency injection, lazy loading
OOP(面向對象編程)PHP類的繼承模式(extends class), PHP介面(implements interface)
PHP資料庫操作類: mysqli類, pdo類
HTTP請求,header中的各種參數設置
Web Programming的安全事項, 如xss防護
《代碼簡潔之道》,《PHP Zend Coding Style》
希望能幫助到你!
⑤ PHP框架我用的BROPHP怎麼從資料庫裡面漢字取出來的是問號應該怎麼改編碼隨便看下控制器第6行的語法錯誤
1. limit(page->limit) 這個不正確,應該是limit(10)之類的。
2. 如果讀取的是問號,那麼可能的原因:
a. 資料庫用的編碼與你顯示的編碼不一致。
b. 保存數據的時候編碼不正確。
c. php腳本文件的編碼與顯示編碼設定不一致。
⑥ php yii框架怎麼設置字體編碼格式
今天在開發的時候需要將excel文件中數據導入到相關的配置文件中,我按照過去經常使用的方法,先將excel導出成csv文件,然後使用fgetcsv函數讀取文件的內容,通過Yii框架中的CConfigure類導出成配置文件,然後在檢查的時候發現導出的數組中有些值中間有一些多餘的反斜杠,這些反斜杠一般出現在繁體中文或者日文的文字中。
一開始我先檢查了csv和excel文件中的欄位,發現並沒有什麼問題,之後我查看了CConfigure類中的saveAsString函數,發現他使用了php中的var_export函數來實現導入配置文件的功能,然後,我又使用var_export輸出會出現問題的某個欄位,發現確實在字元串中添加了反斜杠,而我直接使用echo或者var_mp輸出時,則沒有這個情況發生,這個時候我明白問題是出在var_export這個函數上。
在查閱了相關的資料後我發現var_export這個函數會自動轉義,也許是這個原因導致了字元串中自動添加了反斜杠,可是字元串本身並沒有特殊字元,為什麼var_export還是會添加反斜杠,這個讓我百思不得其解,我查看了出現問題的字元串的2進制編碼,發現出現反斜杠的地方本身的單個字元的ascii碼也是反斜杠,也就是說可能是var_export在轉義時針對單個反斜杠字元進行了轉義?這個原因我最後也沒有搞明白。
不過在我不知道如何解決這個問題的時候,我突然想到我的csv的文字編碼是gbk的,因為是通過excel直接轉的格式,然後我導出的文件編碼是utf-8的格式,同時我的代碼本身也是utf-8的格式,雖然我最後通過格式轉換,成功把gbk的字元串轉換成utf-8導出,但是在轉換的過程中可能會出現問題(當時想的是這樣,不過之後考慮了一下,因為之前在gbk格式下使用var_export已經出現了問題,因此應該不是轉換過程中的問題,應該是var_export處理gbk格式的漢字字元串時產生的bug?),於是我將csv文件全部轉換成utf-8格式,重新導入文件,成功解決。
其實在解決的過程中,很早就想到可能是編碼的問題,但是一直沒有發現excel轉換的csv文件的格式問題,因為之前導出的配置文件沒有漢字,因此沒有出現過這一類的問題,於是就忽略了,不過最後雖然解決了問題,但是問題本身的原因還是不明,推測極有可能是因為gbk編碼和var_export的兼容導致的問題,果然開發中應該還是盡量使用utf-8統一編碼,應該會減少很多不明的錯誤。
2013.1.19更新:經過思考,覺得應該是對於gbk編碼的字元串使用var_export時,函數對於單個字元表示為反斜杠的字元添加了反斜杠的轉義,因此使得該處的字元變為兩個反斜杠,同時因為在顯示時使用了gbk編碼,導致添加的反斜杠作為前一個漢字字元的一部分被顯示,而原來的反斜杠字元則單獨顯示了出來。
⑦ phpstorm怎樣配置上傳代碼到coding
刪除文件可以使用unlink,沒有必要將目錄轉換成絕對路徑,如果想刪除images中的文件,可以直接unlink("/image/文件名")即可~!
如果樓主還不清楚,樓主自己去後盾人自學一下吧
⑧ coding 怎麼部署thinkphp的演示
我覺得第一步必須已經部署好了php的基本開發環境,然後去thinkphp官網下載thinkphp,小編在此處用的是3.1.2版本的。將下載的壓縮包解壓。
在配置好的php環境的www目錄下新建開發的項目,小編在此處新建test文件夾,將解壓的Thinkphp復制到test目錄下。
小編現在大概講解一下Thinkphp的基本概念,基本的目錄結構就如下面的圖片。大家先了解基本的部署以後,在以後的項目開發過程中逐步了解每個目錄的具體含義和功能。
然後,我新建一個目錄用於我們項目的開發,小編建立一個App表示我們要開發的項目。
這時候,我們需要建立一個入口文件。由於ThinkPHP採用單一入口模式進行項目部署和訪問,無論完成什麼功能,一個項目都有一個統一(但不一定是唯一)的入口。所以小編在test目錄下新建一個index.php文件。這個文件就是我們的口文件。在index.php中寫入如下代碼:
<?php
//定義項目名稱
define('APP_NAME', 'App');
//定義項目路徑
define('APP_PATH', './App/');
//載入框架入文件
require './ThinkPHP/ThinkPHP.php';
這時候,在瀏覽器中輸入我們的本地網址,就可以看到如下的內容了。至此,大功告成!同時我們可以看到App目錄下增加了許多目錄,那都是thinkphp自動生成的,隨著我們的開發我們會慢慢熟悉,再學習它!
如果還有不懂的,可以向我一樣遇見不會的在後盾人看看視頻找找答案,多悠閑呀嘿嘿希望能幫到你