我想知道在php類中使用self/method()和parent :: method()是否可接受/首選。
可以使用這 - $>方法(),但$這 - >也可以指一類變量,父類變量,或從父類的方法。有自我::
是自::貶值和/或是否有任何警告或缺點,使用這種風格不會產生歧義?
據我所知,自::和家長::引用類的靜態實例,但在Kohana中,除非你專門定義的方法靜態的,似乎沒有成爲一個差異。
謝謝。
添加了一個例子:從多個網站 假設這個應用商店論壇...
class Forum_Controller extends Controller {
function __construct()
{
parent::__construct();
}
function index()
{
echo self::categories();
}
/*
* get a list of categories from a specific site.
*/
private function categories()
{
$db = new Database;
$categories = $db->query("
SELECT * FROM
forum_categories
WHERE fk_site = '$this->site_id'
");
$view = new View('categories_view');
$view->categories = $categories;
return $view;
}
}
這個例子工程的Kohana與錯誤報告設置爲: 的error_reporting(E_ALL &〜E_STRICT);
$ this-> site_id在主Controller_Core類(kohana中的一個庫)中定義。
據我所知,$這不應該是可用的,因爲我以靜態方式調用self :: categories(),但它只是當我將類()定義爲靜態,它會拋出一個錯誤。
但正如我所說,我更寧可選擇使用自::因爲從可讀性的角度來看,我確切地知道這個功能是應該的,而不是使用$這引起歧義,對我來說那是。
該代碼工作的原因是因爲你永遠指的是$在靜態調用的類方法的對象實例中。 – null 2009-07-16 11:59:53