『壹』 php如何動態調用靜態方法 - 技術問答
[php]function example($className){? ???if (\"Database\" == $className) {? ?? ?? ???Database::staticFunc();? ???}}[/php]
『貳』 TP中如何調用第三方類庫中的靜態方法
首先整理你的類庫文件夾,然後放到tp目錄下的vender/下,我用的是OT二開的,我的目錄在ThinkPHP\Library\Vendor\下,自己先找對這個目錄,把文件夾放進去。
我的最終目錄是這樣的:\ThinkPHP\Library\Vendor\PHPExcelUnit
PHPExcelUnit為我整理過的phpexcel類庫包。
下邊就該說說如何調用了:
在控制器中,需要實例化PHPExcel類,類似這樣的做法是不行的:
$PHPExcel = new PHPExcel();
$PHPReader = new PHPExcel_Reader_Excel2007();
一定要這樣調用,在類名前面加上反斜杠
vendor('PHPExcelUnit.PHPExcel'); //引入類庫
$PHPExcel = new \PHPExcel();
$PHPReader = new \PHPExcel_Reader_Excel2007();
這樣就可以啦。
如果需要調用類的靜態方法。比如說:
PHPExcel_cell::columnIndexFromString('A') ;
還是會提示錯誤,在類前面加上\還是不行,無奈只能把靜態方法扒拉一份,整理到自己的控制器或者模型中,然後再通過自身的方法來調用,例如:
self::columnIndexFromString('A') ;
self::columnIndexFromString('BW');
『叄』 ThinkPHP3.2中如何使用類函數靜態調用
common/里建一個 common.php文件。裡面存函數,這個文件是默認載入的,如果不是 common.php 就得手動載入。
直接建一個 common.php 文件寫在裡面。記得刪除緩存。
可以寫進ThinkPHP/Common/functions.php這個裡面,也可以ThinkPHP/Common/extend.php,但需要載入
載入的話需要理清他的架構,thinkphp載入有很簡單的自定義的一套方法,TP中調用自定義的函數庫應該在項目的config.php里配置
『肆』 php中怎麼調用方法中的靜態變數
static
變數是php中的變數作用范圍的一個重要特性
靜態變數僅在局部函數域中存在且只被初始化一次,當程序執行離開此作用域時,其值不會消失,會使用上次執行的結果
一個普通的變數,如
$message
在它所在的函數執行完之後就被釋放了
即第二個function執行10次,每次執行完後,$message變數被釋放,所以每次都是1
變數前加了static後,該變數在它所在的函數執行完後不會被釋放
即第一個function每次被執行後,static
$message沒有被釋放,它將被繼續累加
『伍』 php中靜態方法的問題
self::是代表在本類里調用靜態方法get();因為在靜態方法裡面只能調靜態方法,不能調用實例方法,如果調用實例方法的話那就用this,
『陸』 如何使用PHP靜態方法與屬性
class Fruit {
public static $category = "I'm fruit";
static function find($class)
{
$vars = get_class_vars($class) ;
echo $vars['category'] ;
}
}
$category為靜態屬性
$find為靜態方法
調用:
Fruit::$category;
Fruit::find();
『柒』 PHP中如何調用靜態成員函數
用IntPtr類型,Hdc一般是指繪圖設備句柄,用Graphics的成員方法GetHdc獲得,Graphics可以用靜態方法FromHwnd創建某個窗體的繪圖器,把某個窗體的Handle傳給他就可以了,如果Handle傳0,則創建的是整個屏幕的繪圖器。
『捌』 php 使用靜態方法的幾個注意事項說明
1.即使類中的方法並未用static聲明,但其未使用到可改變的類成員變數,在外部仍可用操作符::來調用;
2.以靜態方式(用::操作符)調用的方法中$this的取值是由調用時的上下文決定的!而不是定義他的類!!
例如以下的代碼:
<?php
classTestClass1
{
public$normal_v='normal_vfromTestClass1';
publicstatic$STATIC_V='STATIC_VfromTestClass1';
publicfunctiontest_func1()
{
echo$this->normal_v.'<br/>'.self::$STATIC_V;
}
}
classTestClass2
{
public$normal_v='normal_vfromTestClass2';
publicstatic$STATIC_V='STATIC_VfromTestClass2';
publicfunctiontest_func2()
{
TestClass1::test_func1();
}
}
$t2=newTestClass2();
$t2->test_func2();
這段代碼是輸出會是什麼呢,我原以為會是normal_v from TestClass1 <br /> STATIC_V from TestClass1,測試發現其實我錯了,正確的輸出是:
normal_v from TestClass2
STATIC_V from TestClass1
說明:test_func1()雖然是在TestClass1中定義的,但卻是在TestClass2中調用的,其內部的$this變數則是由TestClass2決定的!
其實這兩個類的關系應該屬於"雙向關聯".
『玖』 php中靜態成員如何使用
當前類中使用self::或者static::調用靜態成員,靜態方法中只能調用靜態成員,外部直接使用類名::靜態成員調用
『拾』 php父類如何調用子類的靜態方法或變數
<?php
classA{
staticpublic$m=1;
staticpublicfunctionm(){
echostatic::$m,'<br/>';
}
staticpublicfunctionn(){
static::n();
}
}
classBextendsA{
staticpublic$m=111;
staticpublicfunctionm(){
parent::m();
}
staticpublicfunctionn(){
echoparent::$m,'<br/>';
}
}
B::m();
B::n();