① php,thinkphp自動載入怎麼實現的呢
php 中有個魔術方法__autoload ,這個函數在找不到類的時候就會調用,自動載入就是在這里實現的。通過指定自動載入類的路徑,只要保證文件名和類名一樣。就可以自動載入。這也是為什麼你看很多源碼中類的名字和文件名一樣的原因,這樣可以實現自動載入,不需要include.
② thinkphp 怎麼引用文件
THINKPHP引入PHP文件和原生的是一樣的,沒有區別! 因為TP是基於PHP上的一個框架。
目前有兩種方法,一種是include和require,還有一種是include_once和require_once。根據不同的場合使用不同的代碼。前面一種是局部引入,如果不存在會提示但不會終止;後面一種引入是將被引入界面認為是現有頁面的一個整體,如果不存在會終止程序並報錯。
具體參考代碼如下,include類同,具體參考上方區別:
require './path/file_name.php'; //可以執行多次,例如某個模塊
require_once './path/file_name.php'; //只包含一次,一般為通用函數等
在thinkPHP中模板和css是這樣的輸出和引用的:
首先說模板要放在與模板對應的文件夾中,然後css和js等外部引用的文件要在你模板目錄下新建一個名叫public的文件夾,css和js文件就是放在這個文件夾中的。
注意此時要更改模板(htnl文件)中的引用地址的代碼,例如:
原來你引用css文件是這樣引用的:
<link rel="stylesheet" href="./Css/index.css" />
但是在thinkPHP中你要改成:
<link rel="stylesheet" href="__public__/Css/index.css" />
__public__的意思訪問當前目錄下的public 文件夾,thinkPHP就會訪問public文件夾。
③ thinkphp怎樣在html載入php文件
thinkphp有個<php></php>標簽,裡面可以寫php代碼,在標簽裡面直接clude文件,我想是可以的。
④ thinkphp 載入常用函數和配置文件 會有緩存嗎
一、配置文件設置首先,我們在TP項目配置目錄Config下新建一個配置文件,命名為setting.config.php,這個文件用以保存動態的參數。然後,項目主配置文件Config.php中用合並數組的方式,將setting.config.php合並進來。這樣,在整個項目中,即可調用setting.config.php中的配置參數了。
二、實現動態管理參數在後台,建立一個功能,將setting.config.php的默認值讀出,並顯示在一個表單中。這里可以使用TP的C函數實現。然後,即可在表單中對各個參數的值進行設置。表單提交保存後,將表單提交的值,進行處理,具體代碼如下:setting.config.php文件的結構
<?php
return array(
'setting'=>array(
'tel'=>'400-088-7380',
'qq'=>'88888888',
......
),
);
?>
保存配置參數的操作
function SaveSetting(){
//setting.config.php文件的路徑,通過settingfile_path來設定;
$setfile='./Home'.C('settingfile_path');
$a=C('setting');//將默認配置參數的內容賦值給$a;
$b=array(
'tel'=> $_POST['tel'],
'web'=> $_POST['web'],
........
);
//這里將新的參數值,通過後台的表單提交過來;
$c=array_merge($a,$b);
//將數組$a和$b合並;我們知道,array_merge()函數,可以合並兩個數組,並且如果數組元素具有相同的鍵名,後面的值會覆蓋前面的值(數字鍵名除外);然後,將合並後的數組$c的值進行遍歷後,生成php文件代碼;
$settingstr="<?php \n return array(\n'Setting' =>array(\n";
foreach($c as $key=>$v){
$settingstr.="\t'".$key."'=>'".$v."',\n";
}
$settingstr.="),\n);\n?>\n";
file_put_contents($setfile,$settingstr);//通過file_put_contents保存 setting.config.php文件;
到此,setting.config.php文件的配置參數的值,已經被更新;(Thinkphp3.1版本,已經支持C函數保存設置的參數值,所以,本方法,適合於3.0及以下版本的TP)另外,我們知道TP在第一次運行時會把項目所有的配置文件,配置參數等,生成一個runtime緩存文件,如果我們更新了congfig 的內容,那麼必須刪除項目中的緩存文件後才能生效。為此,我們讓系統自己來清空緩存,更新參數。代碼如下:
//RUNTIME_FILE常量是入口文件中配置的runtimefile的路徑及文件名;
if(file_exists(RUNTIME_FILE)){
unlink(RUNTIME_FILE);//刪除RUNTIME_FILE;
}
光刪除runtime_file還不夠,要清空一下Cache文件夾中的文件;代碼如下:
$cachedir=RUNTIME_PATH."/Cache/";//Cache文件的路徑;
if($dh = opendir($cachedir)){//打開Cache文件夾;
while(($file = readdir($dh))!==false){//遍歷Cache目錄,
unlink($cachedir.$file);//刪除遍歷到的每一個文件;
}
closedir($dh);
}
到此,整個動態配置參數文件,並清空緩存的功能全部實現
⑤ thinkphp import 導入文件怎麼使用
1,ThinkPHP import 方法
ThinkPHP 模擬了 Java 的類庫導入機制,統一採用 import 方法進行類文件的載入。import 方法是 ThinkPHP 內建的類庫和文件導入方法,提供了方便和靈活的文件導入機制,完全可以替代 PHP 的 require 和 include 方法。
但對於第三方類庫,我們建議使用 vendor 方法來導入。
2,import 語法:
boolen import(class, baseUrl, ext)
參數說明:
參數
說明
class 必須,表示要導入的類庫,採用命名空間的方式。
baseUrl 可選,表示導入的基礎路徑,省略的話系統採用默認的規則,具體見下文。
ext 可選,表示導入的類庫後綴,默認是 .class.php 。
import 方法是 ThinkPHP 內置的一個普通函數,可以在模塊操作內自由使用,可以參考 PHP include 和 require 的用法。
import 類庫導入例子
導入 ThinkPHP 基類庫文件
import 方法導入 ThinkPHP 基類庫文件,約定導入 Think、ORG、Com 包以 ThinkPHP 系統基類庫為相對起始目錄:
// 導入 ThinkPHP系統目錄/Lib/Think/Util/Session.class.php 文件
import("Think.Util.Session");
// 導入 ThinkPHP系統目錄/Lib/ORG/Util/Page.class.php 文件
import("ORG.Util.Page");
導入項目應用類庫文件
// 導入 MyApp項目 Lib/Action/UserAction.class.php 文件
import("MyApp.Action.UserAction");
// 導入 MyApp項目 Lib/ORG/Page.class.php 文件
import("MyApp.ORG.Page");
// 導入 MyApp項目 Lib/ORG/My/Image.class.php 文件
import("MyApp.ORG.My.Image");
如果是當前項目,可以簡化為:
import("@.Action.UserAction");
import("@.ORG.Page");
import("@.ORG.My.Image");
這種寫法有利於項目的移植。如果是導入其他項目的類庫,必須指定項目名稱:
import("OtherApp.Action.UserAction");
注意:使用這種方式導入其他項目的類庫時,必須保證兩個項目的目錄是平級的,否則需要指定 baseUrl 參數。
指定 baseUrl 參數
對於以上導入系統類庫和項目類庫的情況,import 方法會自動識別類庫導入的路徑,其他情況就需要指定 baseUrl 參數。如導入當前文件所在目錄下的 My.class.php 文件:
import("My",dirname(__FILE__));
指定 ext 參數
ext 參數表示導入的類庫後綴,默認是 .class.php。如果導入的文件不是 *.class.php 格式的,可以指定 ext 參數。如導入當前文件所在目錄下的 My.php 文件:
import("My",dirname(__FILE__),".php");
. 符號文件導入
在 import 方法中,. 符號是用於表示目錄層次的,如果需要導入的文件名包含有 . 符號,如 User.Info.class.php ,那麼需要以 # 號來代替 . 號:
import("@.Action.User#Info");
別名導入
如果在別名定義文件定義了別名:
'AdvModel' => THINK_PATH.'/Lib/Think/Core/Model/AdvModel.class.php',
可以使用 import 方法以別名的方式導入對應的類庫文件:
import('AdvModel');
系統默認的別名定義文件位於 ThinkPHP 系統目錄下的 Commonalias.php,也可以定義項目自己的別名文件。
其他說明
同名文件導入沖突
import 方法具有緩存和檢測機制,相同的文件不會重復導入,如果發現導入了不同的位置下面的同名類庫文件,系統會提示沖突,例如:
import("Think.Util.Array");
import("App.Util.Array");
上面的情況導入會產生引入兩個同名的 Array.class.php 類,即使實際上的類名可能不存在沖突,但是按照 ThinkPHP 命名規范,類名和文件名是一致的,所以系統會拋出類名沖突的異常,並終止執行。
什麼時候需要使用 import 方法?
import 方法用於導入當前需要而 ThinkPHP 又不能自動載入的文件,如系統基類 ORG 與 Com 目錄下的擴展基類,自己的類庫等。至於第三方類庫,也可以使用 import 方法導入,但建議使用 vendor 方法導入。
import 方法與 import 標簽的區別
import 方法用於模塊操作中導入不能自動載入的文件類庫,import 標簽用於在模板中導入外部 Js 和 CSS 文件。
import 方法與 PHP6 import
在未來的 PHP6 版本中開始支持命名空間和 import 關鍵字,因此可以預見,ThinkPHP 可能會對 import 方法加以改寫。
⑥ thinkphp 中Common.php文件怎麼不能自動載入
注意linux下對大小寫有嚴格要求,檢查一下大小寫Common/common.php,改正確後刪除Runtime,再試試
⑦ thinkphp 3.2.2版本中 是怎麼載入 functions.php 的,給解釋一下
ThinkPHP的函數有三類,一類是系統函數,在ThinkPHP目錄下的Common下;一類是項目函數,在項目目錄下的Common目錄中;最後一類是擴展函數。
1、系統函數:包含function.php、common.php和runtime.php三個文件,程序運行時無需手動載入,在編譯過程中自動載入;
2、項目函數:是項目中的Common文件中的Common.php 文件(一般不存在,需自己創建),分組部署時,需要使用 (分組名)/function.php命名。此類函數也是可以直接載入的;
3、擴展函數是指用戶自定義的函數,可以提供給開發者更多的DIY內容,函數名自定義,但是不是在設置了自動載入的情況下是不能自動載入的。
函數的載入:
系統函數和項目函數是不需要載入就能直接使用的,但是擴展函數還是需要載入才能使用的,這里可以有動態和靜態兩種方式載入擴展函數:
1、動態載入:(可以實時生效)
'LOAD_EXT_FILE'=>'USER'//項目中的conf.php
2、手動載入:(個別模板使用)
load(@.user)//載入的就是Common目錄下的user.php,@只本目錄下的
⑧ thinkphp怎麼引入外部文件
thinkphp引入外部文件操作如下:
/*
類文件命名方式IDCheck.class.php
類文件裡面注意要命名空間,,例如在Think文件夾下面,就要命名為namespace Think;
*/
/*
控制器裡面的寫法:
引入方法:use Think\IDCheck;
然後再實例化該類,實例化方法:$ID = new IDCheck();
*/
⑨ thinkphp 怎麼載入根目錄配置文件
默認情況就會載入根目錄下的配置文件。
在ThinkPHP中,一般來說應用的配置文件是自動載入的,載入的順序是:
慣例配置->應用配置->模式配置->調試配置->狀態配置->模塊配置->擴展配置->動態配置
以上是配置文件的載入順序,因為後面的配置會覆蓋之前的同名配置(在沒有生效的前提下),所以配置的優先順序從右到左。