abstract class BaseController
{
protected $arctica, $database, $content, $cacheTime;
function __construct($arctica)
{
$this->arctica = $arctica;
$this->config = $arctica->config;
$this->database = $arctica->database;
}
class Controller extends BaseController
{
protected $cacheTime = 2;
protected $database = 'override'; //trying to override database var
function __construct($arctica)
{
parent::__construct($arctica);
}
function Run()
{
var_dump($this->database); //A class instance, not string('override')
$this->load('homepage');
}
}
このクラスについていくつかお聞きしたいことがあります。
Q1:に到達したい場合$database variable of child class
、どうすれば到達できますか?
Q2:$database variable in parent class
自分自身であっても、子クラスによって変更/オーバーライドできないようにするにはどうすればよいですか? ($database は、データベース インスタンスを保持する定数である必要があるため、Controller の子はそれに触れてはなりません。) 今はそのようになっていますが、理由がわかりません。
Q3:作成した変数にパラメーターを追加するにはどうすればよいですか? 同様に、保護された $var の代わりに、 protected const $var
私にとってより意味があります。PHPがサポートしていないだけなのか、OOPではまったくサポートされていないのでしょうか? (多分それはサポートされているのですが、方法がわかりませんか?)
Q4:親クラスでメソッドを定義した場合、$this なしで到達できますか? のようにload('homepage')
。
どうもありがとう!