ホームページ  >  記事  >  バックエンド開発  >  thinkphp コントローラーのスケジュール設定の使用例_PHP チュートリアル

thinkphp コントローラーのスケジュール設定の使用例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:24:58994ブラウズ

1. アドレスバーパラメーターを通じてモジュール名とコントローラー名を取得する方法 (ルーティングがあり、書き換えモジュールがオンになっている場合でも)

2. tp はプレメソッドおよびポストメソッドの関数モジュールをどのように実装し、パラメーターを使用してメソッドを実行するのか?

PHP システムに付属する ReflectionClass クラスと ReflectionMethod クラスは、ユーザー定義クラスの属性、メソッドのアクセス許可、パラメーターなどの情報を反映できます。この情報を通じて、メソッドの実行を正確に制御できます

ReflectionClass で使用される主なメソッド:
hasMethod(string) メソッドの有無
getMethod(string) メソッドの取得

ReflectionMethod メインメソッド:
getNumberOfParameters() パラメータ数を取得
getParamters() パラメータ情報を取得

3. コードのデモ

コードをコピーします コードは次のとおりです:

class IndexAction{
public functionindex(){
echo 'index'."rn";
}
public function test( $year=2012 ,$month=2,$day=21){
echo $year.'--------'.$month.'----------'.$day ."rn ";
}
public function _before_index(){
echo __FUNCTION__."rn";
}
public function _after_index(){
echo __FUNCTION__."rn";
}
}

//インデックスメソッドを実行
$method = new ReflectionMethod('IndexAction','index');
//権限判定を行う
if($method->isPublic()){
$class = new ReflectionClass(' IndexAction ');
//プレメソッドを実行します
if($class->hasMethod('_before_index')){
$beforeMethod = $class->getMethod('_before_index');
if($beforeMethod- > isPublic()){
$beforeMethod->invoke(new IndexAction);
}
}

$method->invoke(new IndexAction);

//postメソッドを実行します
if($class->hasMethod('_after_index')){
$beforeMethod = $class->getMethod('_after_index');
if($beforeMethod->isPublic() ){
$beforeMethod->invoke(new IndexAction);
}
}
}


//パラメータを指定してメソッドを実行する
$method = new ReflectionMethod('IndexAction','test');
$params = $method->getParameters();
foreach($params as $param ){
$ paramName = $param->getName();
if(isset($_REQUEST[$paramName]))
$args[] = $_REQUEST[$paramName];
elseif($param->isDefaultValueAvailable())
$args[] = $param->getDefaultValue();
}
if(count($args)==$method->getNumberOfParameters())
$method->invokeArgs(new IndexAction,$args);
else
echo 'パラメータが一致しません!';

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825264.html技術記事 1. アドレス バー パラメーターを通じてモジュール名とコントローラー名を取得する方法 (ルーティングがあり、書き換えモジュールがオンになっている場合でも) 2. tp がプレメソッドおよびポストメソッドの関数モジュールを実装する方法、そして...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。