開発には ThinkPhp3.2 を使用してください。コードの再利用を高めるために、追加、削除、変更、検索操作を使用する必要があることが多いためです。コードの追加、削除、変更、クエリを行うために、curdControlerとcurdModelを共通に記述しましたが、追加、削除、変更、クエリを使用する必要がある場合は、curdControllerとcurdModelを直接継承します。
ここで問題が発生しました。通常、カードの操作には許可判定が必要であり、そうでないと非常に危険です。ここでの私のアイデアは、curdController 構築メソッドで checkAuth() を呼び出すことです。さまざまな関数があるため、権限制御メソッドは異なります。curdController を継承するサブクラスに checkAuth メソッドをオーバーロードさせるにはどうすればよいですか?
私のアイデアは、許可判定関数を抽象メソッドとして定義することです。 リーリー
curdController クラスは抽象クラスとして定義されていますが、抽象クラスをインスタンス化できない場合、コンストラクターのコードは無効になります。この実装の何が問題ですか?2 番目の質問です。TP コードを再利用する際に、より良いアイデアはありますか? 私のアプローチの隠れた危険性や問題点は何ですか? アドバイスありがとうございます。
リーリー
コードを再利用するには、PHP 機能を使用することをお勧めします:
http://php.net/manual/zh/lang...
またはクロージャ バインディングを使用します (推奨されません):
http://php.net /manual/en /閉じる...
checkAuth
可以通过不同的业务,书写不同的traits,在具体继承curdController的类中使用对应的traits,由于checkAuth()
只返回校验结果的真假,所以这个可以向任意的Controller中定制checkAuth()
。最初の質問への答えとして、抽象クラスを継承しているため、サブクラスがインスタンス化されている限り、親クラスのコンストラクターも使用できます。以下の例を参照してください:
結果:curdController
的子类构造函数里,手动调用了parent::__construct();
コード:。 リーリー
2 番目の質問に対する答えとして、私は個人的には、一般的な 1 対多および多対多の関係はまだ手動で行う必要がある構造フレームワーク全体だと感じています。この関連付け操作をカプセル化することをお勧めします。で作られた再利用パッケージです:
私は個人的にデータテーブルのアトミック操作を最下層に配置しましたCodeIgniter
,但是我觉得MVC(HMVC)模型基本思路都是一致的,所以下面谈下我个人在CodeIgniter
いくつかの設定項目といくつかの書き換えに頼ることで、ソースコードの一部を以下に公開することができます。 リーリー
Model
上面(是基于CI-Base-Model
改的,你可以看一下CI-Base-Model
里的has_many
和belongs_to
配置),另外我继承了CI-Base-Model
自己写了一个CRUD_Model
,这个CRUD_Model
私のモデルのアイデアが CRUD ロジックの改良に役立つことを願っています。