2
在Laravel中创建基本模型时,我扩展了Eloquent
类,以便我的模型具有所有令人敬畏的Eloquent功能。例如:Laravel在创建模型时扩展了口才
class Product extends \Eloquent {
//class definition here
}
我一直在读通过Laravel框架源代码,我不明白的地方这Eloquent
类实际上来自。我可以看到有一个Illuminate\Database\Eloquent\Model
类,它似乎具有我期望从Eloquent
类扩展的所有功能,但是我很困惑继承是如何工作的,因为我扩展了Eloquent
而不是Illuminate\Database\Eloquent\Model
。
这是如何工作的?
这个别名是如何工作的?如果我扩展'Eloquent',那么PHP不会抛出类未找到类错误的错误?我试图找到实现这一目的的代码。 – flyingL123 2015-01-26 18:24:37
我相信框架内部发生了很多事情,但这是一个起点。 查看供应商/ laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php文件 '使用Illuminate \ Support \ Facades \ Facade; 使用Illuminate \ Foundation \ AliasLoader; 使用Illuminate \ Contracts \ Foundation \ Application; Facade :: setFacadeApplication($ app); AliasLoader :: getInstance($ app ['config'] ['app.aliases']) - > register();' – 2015-01-26 18:29:06
谢谢。在'config/app.php'中的这个数组中,我还看到了'SoftDeletingTrait'=>'Illuminate \ Database \ Eloquent \ SoftDeletingTrait'的条目。如果存在这种情况,为什么我需要使用软删除特性将此行包含在每个模型的顶部? '使用Illuminate \ Database \ Eloquent \ SoftDeletingTrait;'。我不应该只在模型中使用SoftDeletingTrait;而不需要导入命名空间? – flyingL123 2015-01-26 18:33:00