thinkphp-1
thinkphp網(wǎng)站: http://thinkphp.cn, http://bbs.thinkphp.cn
?在設(shè)置文件夾查看試圖的時候, 只點" 應(yīng)用到所有文件夾" 不要點"重置所有文件夾" , 那個是"重置"到默認視圖!
?登錄檢查頁面->登錄成功頁面: verify.php->success.php: "登錄成功, 正在為你跳轉(zhuǎn)..."
?
過程化寫網(wǎng)站和用框架ThinkPHP來寫: 前者可能需要一個月, 后者可能需要一個星期
需要使用框架, 只專注于業(yè)務(wù)就好. 類/方法/邏輯都考慮好了, 封裝好了的. 正如你要用電腦, 你不需要自己去寫一個操作系統(tǒng)
你要開車, 也不需要自己去造一個車出來, 你要住房子, 也不需要自己去修房子...
?
mvc?
網(wǎng)站開發(fā), 基本上都是基于/面向數(shù)據(jù)庫的 web應(yīng)用程序
M: model, 基本上就是 :數(shù)據(jù)庫(的一個類)
V:view基于模板的視圖
C: controller, 就是M和V之間的橋梁. V是將請求發(fā)送到C, Controller實際上就是中間層, 是我們寫的控制邏輯 php代碼.
項目的 單一 入口文件, 將程序的控制權(quán)交到 控制器手中, 以后就由 控制器來實現(xiàn)調(diào)度.(調(diào)度者,管理者).
注意: view視圖是不能 不應(yīng)該直接和數(shù)據(jù)庫打交道的
?
?thinkphp的版本和下載核心包還是完整包?
現(xiàn)在公司用得較多的是v3.1.3
要下載完整包, 完整包額外包含了常用的一些類: 上傳類/下載類/驗證碼類/分頁類/圖形處理類等等. 核心包只有
ThinkPHP運行必須的一些文件
?注意,? 下載下來解壓后的 目錄名稱很長如什么thinkphp_v3.13_utf8_full等等之類的 , 為了便于在項目中 在編程中引用,
通常把目錄名更改成: ThinkPHP簡短的就好.
?
thinkphp從哪個版本開始, 入口文件部署變化了?
從v3.2開始, 入口文件部署變了: 整合了你要開發(fā)的項目目錄, 自帶了入口文件index.php, 然后, 你只要將
你的項目放在: 和ThinkPHP同級的 Application目錄中就可以了
而v3.1.3及其之前的版本, 都是由用戶自己來創(chuàng)建index.php, 而且這個index.php文件是放在 整個項目的跟目錄下, 并且
跟ThinkPHP文件夾同級的地方.
?
?如何寫thinkphp項目的入口文件index.php?
<?php
define('APP_NAME', 'Index');
?
// 注意這個應(yīng)用程序 /項目 名稱, 不是總的項目名稱, 而是說, 你創(chuàng)建的這個項目是(前臺項目, 還是
????????????????????????????????????????? // 后臺項目,或者說是你自己定義的項目如 登錄/注冊項目. 一般前臺項目用Index*大寫*來表示
// thinkPHP對文件名/ 文件夾名稱的 大小寫比較 是 嚴格區(qū)分的, 比較明顯, 所以這里凡是 目錄都首字母大寫,
// 盡量 要 跟系統(tǒng)內(nèi)的約定 一致!!
?
define('APP_PATH', './Index/);?
?
// 項目路徑是上面那個的路徑, 在thinkphp中, 目錄都要首字母大寫.? 而且表示目錄要在結(jié)尾加/
// 表示目錄, 都要在目錄名后面加 斜杠, 如果不加, 將會生成以Index為前綴的多個目錄, 而不是把項目文件夾放在 Index/目錄下.
?
define('APP_DEBUG', TURE);
// 這個define('APP_DEBUG', TURE); 要放在require ThinkPHP.php之前, 如果放在require語句之后, thinkphp核心都都執(zhí)行完了, 還有什么用? 要事先告訴thinkphp內(nèi)核.
?
?include? './ThinkPHP/ThinkPHP.php'; // 最好用include或者require ,不要用xxx_once, 用xxx_once效率低??
// include或require后,? 實際上"包含" 就是 "執(zhí)行" , 通過執(zhí)行這個thinkphp的核心模塊/文件, 就生成了你的應(yīng)用程序 /項目文件夾 了!
/* APP:run(); */? 這個不用再寫了, 可能內(nèi)核在最后就已經(jīng)調(diào)用了這個run()函數(shù)了, 如果再寫這個, 就會生成兩個thinkphp的笑臉.
??>
thinkphp經(jīng)過改進, 消除Runtime目錄放在其他位置的bug. 不用再寫: define('RUNTIME_PATH', './Index/Runtime/');
?
平級和上級目錄的表示?
對于 當前正在編輯的文件 , 和它 平級(跟它在同一個目錄, 排列/ 顯示 在一起的)的文件/文件夾, 引用位置都是" 當前目錄./"
?對于 當前正在編輯的文件 , 和它 上一級的目錄( 從當前文件開始, 向上一次 可以顯示)的文件/ 文件夾, 引用位置:"../"
?
?
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes) in C:\wamp\www\think\ThinkPHP\Common\common.php on line 657是說在 "一個" php腳本:common.php中,? 內(nèi)存的極限為8M被用完: 改為: memory_limit = 256M
?
thinkphp的控制器放在什么地方?
Controller就是Action :? 放在? Index/Lib/Action/ IndexAction.class.php中.
控制器實際上, 是一個類, 繼承自 Action的一個 XxxAction的一個類, 其控制功能就是通過里面的函數(shù)方法來實現(xiàn)(調(diào)控/路由的).
注意, 生成的Index "項目"基本上跟ThinkPHP的目錄相同 , 只是thinkphp中的Extend目錄被Runtime目錄所替代,
其他如:Common,Config,Lang, Lib,? Tpl都有.
但是, 項目Index下的目錄一般都是空的!
?
形成自己的規(guī)則和套路?
套路很重要, 免得你迷惑, 是你輕松愉快 + 高效率
如: thinkphp的駝峰命名法,? 文件夾/文件單數(shù)命名法, 大括號的書寫風(fēng)格...
?
?php的類和c++的類 new的不同?
c++的類實例, 只有類中 存在 帶參構(gòu)造函數(shù)的時候, 才用new Foo(10, 'abc'); 否則就不能帶括號: new Foo
而php的類實例化, 不管是否有帶參構(gòu)造函數(shù), 都必須帶括號: $obj = new $control();?
而且php的類名? 和 函數(shù)名? , 支持 變量 替換...
$_GET等全局變量, 不但使用其成員: $_GET['name'],? 而且使用/打印 其本身 也是較多的: print_r($_GET);
?
thinkphp單入口的運行方式?
單入口文件index.php 相當于:?
<?php
?$control = isset($_GET['m']) ? $_GET['m'] : 'Index';
?$action = isset($_GET['a']) ? $_GET['a'] : 'index';
$obj = new $control();
obj -> $action();
class IndexAction() {?? // Action是后綴, 主要是為了和 Model表示數(shù)據(jù)庫的后綴相區(qū)別!
? ?? public index(){
? ? ? ? ? echo "Index index";
}
???? public show(){
? ? ? ?? echo "Index show";
}
}
實際上, 是調(diào)用單入口文件index.php的 get方法 傳參 m="(實例化)控制器 類"? & a="方法".? 控制器首字母大寫, 而方法總是 全小寫
?.....
一個控制器中的方法, 就對應(yīng)/代表 著一個 view的頁面
而一個控制器, 就相當于 項目中的一個 "邏輯/ 功能 模塊"!如 首頁模塊, 登錄模塊, 分頁模塊, 會員中心, 搜索頁等等.
?
?>
?
defined不用if?
因為defined是函數(shù)調(diào)用, 有bool類型的返回值, 所以在判斷某個常量是否 被定義時, 直接使用 defined, 而不必用 if(defined(...)).
?最常用的:? defined('APP_NAME') or define('APP_NAME', 'Index');
?
thinkphp v3.1.3需要的php最低版本?
defined('THINK_PATH') or exit();
if(version_compare(PHP_VERSION,'5.2.0','<'))? die('require PHP > 5.2.0 !');//? 版本信息
define('THINK_VERSION', '3.1.3');
php除了自定義常量外, 還可以使用 系統(tǒng) 預(yù)先定義 的系統(tǒng)常量(可以直接使用...):
: __FILE__, __LINE__, PHP_VERSION, PHP_OS, TRUE ,FALSE
E_ERROR, E_WARNING, E_PARSE.
常量的使用, 可以直接用常量名, ? 也可以constant( $constant_var), 后者更靈活, 可以帶表示常量的變量...
?
需要自己創(chuàng)建輪子嗎?
摒棄 "英雄主義", 這個世界不是哪一個人的能力把人類發(fā)展到現(xiàn)在的程度的, 誰都不是上帝, 而是所有人的智慧的結(jié)晶
所以, 不必想自己去創(chuàng)造一切, 什么東西都要自己從原始 社會建設(shè)做起, 所以, 完全不必 自責(zé)計算機里的東西不是自己創(chuàng)造的,
"就算windows也不是比爾一個人創(chuàng)造的, linux也不是linus一個人創(chuàng)造的", 所以, 不要感到羞愧! 不要想做"英雄"主義.
不要為自己 使用 "工具" 而感到自責(zé)羞愧. 這些都是"人類社會"的智慧結(jié)晶.
不要去管" 工具 是否簡陋", 界面是否"美觀", 只要較好的/高質(zhì)量的 "完成功能" 就好. 電腦僅僅只是 工具!
一切都是為了高效率和方便
?
HTML 表單并不傳遞整數(shù)、浮點數(shù)或者布爾值,它們只傳遞字符串。要想檢測一個字符串是不是數(shù)字,可以使用 is_numeric() 函數(shù)
?
php的TRUE 和FALSE?
true和false 是php的關(guān)鍵字 , 而TRUE和FALSE是php的預(yù)定義的常量. 隨便寫哪個都可以.
?
thinkphp默認沒有開啟APP_DEBUG?
因為在開發(fā)階段, 代碼經(jīng)常要隨時修改, 為了能夠及時看到修改后的結(jié)果, 所以要開啟define('APP_DEBUG', TRUE);
而上線后, 網(wǎng)站已經(jīng)開發(fā)好了,? 不會再修改了, 所以為了網(wǎng)站的響應(yīng)更快, 不必每次都去解釋執(zhí)行, 所以就做了Runtime/~runtime.php
的編譯, 響應(yīng)請求時, apache引擎直接讀取這個~runtime.php這個緩存文件.
當然, 不是每個php文件都會編譯緩存 , 如控制器下面的 action方法好像就沒有緩存, 而Config/config.php文件就預(yù)編譯緩存了的.
TinkPHP.php中的以默認的是沒有開啟調(diào)試的 : defined('APP_DEBUG') ?? ?or define('APP_DEBUG',false);
?model和module的區(qū)別?
?model :[?mɑd?l]?
adj. 模范的;典型的 the model teacher, the model examplen. 模型;模式;典型;模范;模特兒;式樣
v. 模擬;模仿;做模特兒;做模型;塑造
module: 美[?mɑd??ul]
n. 單元,組件;艙;模塊所以, 一般在php, thinkphp中用的都是 model. 表示模型的意思:表對應(yīng)一個類, 表的記錄對應(yīng)一個類實例.
?
ThinkPHP的Conf和項目的Conf配置文件的區(qū)別?
ThinkPHP中的Conf是對全局的配置, 包括: alias.php, convention.php(注意是慣例,不是"方便的"), debug.php, tags.php
而項目的Conf/配置文件則是: config.php.?
一般, 配置文件的寫法就是: return array(.....);
一般, 是修改"項目的"配置文件, ThinkPHP自帶的配置文件一般不修改??
?
thinkphp的項目默認訪問路徑?
默認的是:localhost/think/index.php?m=Index&a=index, 所以, 可以只寫localhost/think/
這里的m 是指的 "是前臺模塊" 還是 "后臺 Admin 模塊".
?
echo輸出字面值時的處理
echo var_name;?
會首先搜索var_name是不是一個常量, 如果沒有搜索到, 才會直接輸出字符串"var_name", 所以, 要養(yǎng)成如果是字符串就要
帶上引號的 習(xí)慣.
?
---------------------------------------------------------------------
查看thinkphp的版本?
{$Think.version}: 在html中,使用TagLibs, 不是使用<>, 而是使用{}. 這樣做, 是為了 和 html標簽 相區(qū)別!? 同時, 也讓標簽庫引擎就能知道識別了!
?
轉(zhuǎn)載于:https://www.cnblogs.com/bkylee/p/5244065.html
總結(jié)
以上是生活随笔為你收集整理的thinkphp-1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C语言位运算的应用】如何按bit位翻转
- 下一篇: Maven(四):定制库到Mave本地资