BaseActiveRecord類的檔案路徑為:項目\vendor\yiisoft\yii2\db\BaseActiveRecord.php
是因為BaseActiveRecord類為abstract才不需要實現介面中的全部方法,還是介面中的find()方法為static就不需要實現?還是yii2中再別的地方做了處理?
回複內容:
BaseActiveRecord類的檔案路徑為:項目\vendor\yiisoft\yii2\db\BaseActiveRecord.php
是因為BaseActiveRecord類為abstract才不需要實現介面中的全部方法,還是介面中的find()方法為static就不需要實現?還是yii2中再別的地方做了處理?
php5.5.11測試了一下,發現abstract類不需要實現Interface中的方法,但是要在繼承類中實現Interface中的所有方法。
BaseActiveRecord繼承了model的部分方法,剩下的方法在繼承類ActiveRecord中實現了。
ActiveRecordInterface.php
phpinterface ActiveRecordInterface{ public static function a(); public function b(); public function c();}
BaseActiveRecord.php
phpinclude "ActiveRecordInterface.php";abstract class BaseActiveRecord implements ActiveRecordInterface{ // public static function a(){echo 'a';} // public function b(){echo 'b';} // public function c(){echo 'c';}}
test.php
phpinclude "BaseActiveRecord.php";class test extends BaseActiveRecord{ public static function a(){} public function b(){} public function c(){} function d(){ echo 'dd'; }}$a = new test();$a->d();
正常輸出dd