phpクラスで作業するときにself :: method()とparent :: method()を使用することが許容されているかどうかを知りたいと思います。
$ this-> method()を使用できますが、$ this->は親クラスのクラス変数、親クラス変数、またはメソッドを参照することもできます。自己にあいまいさはありません::
self :: depreciatedはこのスタイルを使用する際の注意点ですか?
私はself ::とparent ::はクラスの静的インスタンスを参照していますが、kohanaでは、静的メソッドを特に定義しない限り、違いはないようです。
ありがとうございました。
追加例:複数のWebサイトから と仮定すると、このアプリケーションを格納フォーラム...
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()を呼び出しているので$ thisは利用可能ではありませんが、categories()をstaticとして定義してエラーをスローするときのみです。
しかし私は、読みやすさの観点から、この機能がどこにあるのかを正確に知っているので、自己を使う方がむしろ好きです。$ thisを使用するよりもむしろあいまいです。
のためにあなたが静的にコールカテゴリメソッドで$にオブジェクトのこのインスタンスを参照することはありませんので、このコードが動作する理由があります。 – null