[Laravel 6.x]Route::get()で設定したURLパラメーターの取得
Laravel6.xでRoute::get('/path/to/{id}')で設定したidの取得方法について。
HOME>WEBプログラム覚書>PHP クラス関数をコールする「::」演算子
サブクラスでオーバーライドした親クラスのメソッドを呼び出すものと思っていた「::」について調べてみたらそれは使い方の1つに過ぎないようだ。
そもそも「::」はクラス関数を呼び出す演算子ということ。なんで下記のようにオブジェクトを作成しなくてもクラス関数を利用できる。
class MyClass_A
{
var $a = 'MyClass_Aプロパティ';
function view()
{
echo 'thisは「' . $this->a . '」利用できない。<br />';
}
function view2()
{
echo 'これはview2()';
}
}
//PHP5 ではFatal error
//MyClass_A::view();
MyClass_A::view2();
/**
* エラーコード
* MyClass_A::a;
* MyClass_A::$a;
*/
クラス関数を呼び出す演算子なんでプロパティを参照することはできません。またオブジェクトを作成してないので$thisは利用できません。
プロパティにアクセスするにはオブジェクトを作成する必要があるってことですね。
でもってサブクラスでオーバーライドした親クラスのメソッドを呼び出すには書き方が下記のように
class MyClass_B
{
var $b = 'MyClass_Bプロパティ';
function get()
{
return $this->b;
}
}
class MyClass_C extends MyClass_B
{
var $c = 'MyClass_Cプロパティ';
// get()メソッドをオーバーライド
function get()
{
return $this->c;
}
function view()
{
echo parent::get() . '<br />';
echo MyClass_B::get() . '<br />';
echo $this->get() . '<br />';
}
}
$c = new MyClass_C();
$c->view();
「親クラス名::メソッド」と「parent::メソッド」の2つありますが「parent::メソッド」のほうがよい。
理由は親クラス名を複数の場所で利用するとクラス名が変更になった際に面倒だから。
投稿日 | 2008年1月24日 04:02 |
---|---|
カテゴリ | PHP |
タグ | テストコード | 動作確認 |
トラックバック URL | http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1139 |
コメント