TP 5のリクエスト対象の属性とメソッド注入
2752 ワード
1、属性注入:thinkRequest::instance()->属性
2、方法注入:thinkRequest::hook('方法','対応関数')
≪アクション|Actions|emdw≫:現在のリクエスト・オブジェクトに属性とメソッドをバインドします.リクエスト・オブジェクトは、適用されるライフサイクル全体で有効であり、現在のすべてのコントローラ・メソッドによって共有されるだけでなく、コントローラとモジュール間で呼び出されます.
app\index\index.phpの内容:
変更:
したがって、リクエストオブジェクトのいずれかのメソッドを呼び出すことで、リクエスト変数の共有を実現することができる.
しかし、コントローラやモジュールにまたがる場合にも使用できません.
例えば、コントローラに新しいDemoを作成します.phpファイル:
この場合、存在しないと表示されます.オブジェクト注入を用いて解決できます.
リクエスト・オブジェクトに注入されるカスタム・プロパティとメソッドは、元のリクエスト・オブジェクトのプロパティとメソッドと同級であるため、アプリケーション全体のライフサイクルで有効です.
まず、現在適用されているcommon.phpファイル:
そしてindex.php:
使用できます.では、demo 1とdemo 2をDemoにコピーしてみましょう.phpは、コントローラにまたがって使用できるかどうかを確認します.
テストに成功したのと同じように、他のモジュールでも使えます.
2、方法注入:thinkRequest::hook('方法','対応関数')
≪アクション|Actions|emdw≫:現在のリクエスト・オブジェクトに属性とメソッドをバインドします.リクエスト・オブジェクトは、適用されるライフサイクル全体で有効であり、現在のすべてのコントローラ・メソッドによって共有されるだけでなく、コントローラとモジュール間で呼び出されます.
app\index\index.phpの内容:
PHP ';
}
public function demo1($name)
{
return $name; // $name
}
public function demo2() // $name
{
return $name; // $name
}
}
?>
変更:
PHP ';
}
public function demo1($name)
{
return $this->request->param('name'); // $name
}
public function demo2() // $name
{
return $this->request->param('name'); // $name
}
}
?>
したがって、リクエストオブジェクトのいずれかのメソッドを呼び出すことで、リクエスト変数の共有を実現することができる.
しかし、コントローラやモジュールにまたがる場合にも使用できません.
例えば、コントローラに新しいDemoを作成します.phpファイル:
request->has('name','get')){
return $this->request->param('name');
} else {
return ' ';
}
}
}
?>
この場合、存在しないと表示されます.オブジェクト注入を用いて解決できます.
リクエスト・オブジェクトに注入されるカスタム・プロパティとメソッドは、元のリクエスト・オブジェクトのプロパティとメソッドと同級であるため、アプリケーション全体のライフサイクルで有効です.
まず、現在適用されているcommon.phpファイル:
siteName = 'PHP ';
?>
//
function getSiteName(Request $request) // Request
{
return ' :'.$request->siteName;
}
// ,
Request::hook('getSiteName','getiSiteName');
そしてindex.php:
PHP ';
}
public function demo1()
{
return $this->request->siteName;
}
public function demo2()
{
return $this->request->getSiteName();
}
}
?>
使用できます.では、demo 1とdemo 2をDemoにコピーしてみましょう.phpは、コントローラにまたがって使用できるかどうかを確認します.
request->siteName;
}
public function demo2()
{
return $this->request->getSiteName();
}
}
?>
テストに成功したのと同じように、他のモジュールでも使えます.