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

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

WBOY
リリース: 2016-07-13 10:24:58
オリジナル
1010 人が閲覧しました

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 がプレメソッドおよびポストメソッドの関数モジュールを実装する方法、そして...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート