The*_*lis 8 php factory-pattern laravel laravel-4
我正在尝试遵循本文中概述的存储库模式http://code.tutsplus.com/tutorials/the-repository-design-pattern--net-35804#highlighter_174798我正在尝试使用App在Laravel中实例化一个类:: make()(我猜是Laravel的工厂模式?)我试图解析我的课程的参数,但我无法弄清楚如何做到这一点.
码:
namespace My;
class NewClass {
function __construct($id, $title)
{
$this->id = $id;
$this->title = $title;
}
}
$classArgs = [
'id' => 1,
'title' => 'test',
]
$newClass = App::make('My\NewClass', $classArgs);
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出如何使用App :: make()的例子,或者我是否走错了方向,不应该使用App :: make()?
App实际上是Laravel IoC容器的外观,通常用于自动解析.了解IoC概念对于复杂的应用程序开发至关重要,但小型项目肯定会受益于良好的架构.我建议首先深入了解Laravel 文档并尝试一些关于服务提供商,绑定和自动解决方案的示例.
说到你的例子:
namespace My;
class NewClass {
function __construct($id, $title)
{
$this->id = $id;
$this->title = $title;
}
}
$newClass = App::make('My\NewClass', [1, 'test']);
Run Code Online (Sandbox Code Playgroud)
Laravel论坛上的好人为我解答了这个问题http://laravel.io/forum/02-10-2014-laravel-4-confused-about-how-to-use-appmake
几乎如果你可以使用App :: bind()绑定自定义实例化代码; 像这样
App::bind('My\NewClass', function() use ($classArgs) {
return new My\NewClass($classArgs['id'], $classArgs['title']);
});
// get the binding
$newClass = App::make('My\NewClass');
Run Code Online (Sandbox Code Playgroud)