PHPクラスで作業するときにself::method()とparent :: method()を使用することが許容される/推奨されるかどうかを知りたいです。
$ this-> method()を使用できますが、$ this->は、クラス変数、親クラス変数、または親クラスのメソッドを参照することもできます。自己に曖昧さはありません::
自己::は減価償却されていますか、および/またはこのスタイルを使用する際の警告または短所はありますか?
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;
}
}
この例は、エラー報告を次のように設定してコハナで機能します。error_reporting(E_ALL&〜E_STRICT);
$ this-> site_idは、メインのController_Coreクラス(kohanaのライブラリ)で定義されています。
私の知る限り、静的な方法でself :: category()を呼び出しているため、$ thisは使用できないはずですが、categories()を静的として定義した場合にのみエラーがスローされます。
しかし、私が言ったように、私は自分自身を使用する方がはるかに好きです::読みやすさの観点から、あいまいさを引き起こす$ thisを使用するのではなく、この関数がどこにあるべきかを正確に知っています。