Googleで検索を試みましたが、適切なチュートリアルや記事が見つかりませんでした。
PHPにはそもそもフックの概念がないため、おそらく何も見つかりませんでした。
フックは、既存のシステムにプラグイン(またはhook)してその機能を拡張できる一種の関数です。これらは、PHP言語または特定のシステムに固有のものではありません。プラグイン、アドオン、または拡張機能と呼ばれることもあります。
PHPにはフックの概念はありませんが、拡張機能をPHPコアと共にコンパイルして、 PHP拡張機能がデフォルトでバンドルされています。これは私が上記で説明したものの例です。
ええ、フックはネイティブではありませんPHPメソッド..それらは、フレームワークのコアから機能を拡張するために使用されます。
独自のPHPプロジェクトでフックをエミュレートできます:
1)次のクラスを作成して含めます。
class Hooks {
private static $actions = array(
'ev_after_user_create' => array(),
'ev_after_user_profile_update' => array()
);
public static function apply($hook, $args = array()) {
if (!empty(self::$actions[$hook])) {
foreach (self::$actions[$hook] as $f) {
$f($args);
}
}
}
public static function add_action($hook, $function) {
self::$actions[$hook][] = $function;
}
}
好みのフックの名前をそこに定義します。
2)コードでフックを使用できるようになりました。たとえば、新しいユーザーが作成された後にdo smthを実行できます(例):
//here is going any code which creates new user
//hooks
Hooks::apply('ev_after_user_create', array('user_id' => $new_user_id));
3)次の方法でフックアクションを定義します。
Hooks::add_action('ev_after_user_create', function($args) {
if (Router::$application === 'front') {
require_model('users-data');
$ud = new MUsersData(8);
$ud->update_data($ud->create_page(), $args, 'id');
}
});
すべてのフックアクションコードは、そのアクションが必要なコードの前に定義する必要があります!
SplObserver()
など、いくつかの新しいSPL要素でオブザーバーパターンを実装できます。
作業が簡単になります。