ob娱乐下载Symfony和教义2
原则2需要PHP 5.3所以你必须有这个版本是为了遵循本文和测试。
今天我很高兴告诉你,这个版本的sfDoctrinePlugin
你现在可以准备使用。这篇文章将给你一个小的信息今天如何开始使用它!
安装
首先,我们需要从SVN安装插件使用下面的命令从根你的项目:
svn co http://svn.syob娱乐下载mfony project.org/plugins/sfdoctrineplugin/branches/1.3 - 2.0美元/插件/ sfDoctrine2Plugin
现在你只需要启用插件:
类ProjectConfiguration扩展sfProjectConfiguration{公共函数设置(){这个美元- >enablePlugins(“sfDoctrine2Plugin”);}}
配置数据库连接
打开你的配置/ databases.yml
为您的数据库连接和配置它:
:学说:类:sfDoctrineDatabase参数:选择:司机:pdo_mysql用户:根密码:dbname:教义
DSN(数据源名称)学说2中已不复存在。连接信息要简单得多,只是作为一个数组提供的信息。你必须至少指定一个
司机
剩下的选项可用,需要由司机。
配置模式
您可以配置您的方案你总是以同样的方式配置/学说
。模式文件的语法现在大不相同。下面是一个简单的例子用户
实体:
#配置/理论/模式。yml模型\用户:类型:实体表:用户id: id:类型:整数发生器:策略:自动字段:用户名:类型:字符串长度:255密码:类型:字符串长度:255
写数据设备
《纽约时报》的设备不再使用YAML数据。相反,你只需要使用纯PHP数据加载装置。
/ /数据/夹具/ fixtures.php美元新兴市场=这个美元- >getEntityManager();美元的管理=新\ \用户模型();美元的管理- >用户名=“管理”;美元的管理- >密码=“changeme”;
建设原则
现在您已经准备好构建一切。下面的命令将建立模型、形式、过滤器、数据库和数据加载装置。
php syob娱乐下载mfony学说:美元构建——所有和负载
更新模式
如果你改变你的模式映射信息和想要更新数据库可以通过运行下面的命令后,改变你的映射信息。
美元php ob娱乐下载symfony学说:构建——所有类——and-update-schema
原则2在行动
现在,你有一切设置和运行允许探索的一些教义2的工作方式,以及它是如何与Symfony集成。ob娱乐下载
自定义库类
的EntityRepository
类是什么Doctrine_Table
原则1。不再是魔法和自动,您只需要配置您的实体映射信息使用一个存储库类。
模型\用户:类型:实体表:用户repositoryClass: UserRepository #……
现在定义一个UserRepository
类的地方,Symfony可以自动装载它。ob娱乐下载
类UserRepository扩展EntityRepository{公共函数getActiveUsers(){qb美元=这个美元- >createQueryBuilder(“u”);美元的问=qb美元- >getQuery();返回美元的问- >执行();}}
现在您可以使用这个方法如下:
公共函数executeIndex(){/ /……美元的存储库=美元新兴市场- >getRepository(的模型\ User的);美元的用户=美元的存储库- >getActiveUsers();}
当使用Symfony的原则2,我们的实体扩展基类,所以ob娱乐下载我们有更多的可能性。您可以访问存储库通过静态方法调用,类似于Ruby on Rails如何做活动记录。
美元的用户= \ \用户:模型:getActiveUsers();
你也有同样的发现者,你在教义1所建成的。
$ user= \ \用户:模型:找到(1);$ user= \ \用户:模型:findOneByUsername(“jwage”);
实体管理器从行动
当你在一个Symfony动作可以检索ob娱乐下载一个实体管理器实例通过使用getEntityManager ()
方法。
公共函数executeIndex(){美元新兴市场=这个美元- >getEntityManager();$ user=新\ \用户模型();$ user- >用户名=“jwage”;$ user- >密码=“changeme”;$ user- >保存();美元新兴市场- >冲洗();}
默认情况下,方法返回最后一个配置数据库的实体管理器里面databases.yml
。你可以给一个论点的实体管理器。
公共函数executeIndex(){美元新兴市场=这个美元- >getEntityManager(“conn_name”);/ /……}
这就是现在!
本文不可能解释一切新学说2所以建议您开始阅读欧宝官网下载app原则2从教义的网站。
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
谢谢:- d
优秀的工作家伙!
使用php对象意味着更多的字符类型或糟糕的复制和粘贴。
管理美元= new \ \用户模型();
$管理- >用户名=“admin”;
$管理- >密码=“changeme”;
$管理- >电子邮件=“foo@bar.com”;
$ user = new \ \用户模型();
$ user - >用户名=“用户”;
$ user - >密码=“通过”;
$ user - >电子邮件=“foo@bared.com”;
模型\用户:
管理:
用户名:admin
密码:changeme
电子邮件:foo@bar.com
用户:
用户名:用户
密码:通过
电子邮件:foo@bared.com
我花了2秒写YAML和更长的时间来复制粘贴,修改PHP。
我注意到一件事当我试图使用Python和Django是编写更少的力量。意味着你的重要的东西更快。
请请请不要摆脱YML装置……
$ = \ \用户模型:用户:getActiveUsers ();
我对此表示怀疑,因为UserRepository类中的方法,我说的对吗?
@Jonathan:找出什么更好(或不同),请查看原则2文档。欧宝官网下载app这不是一篇关于教条而是学说的新sfDoctrinePlugin 2(当然你可以使用symfony学说2没有sfDoctrinePlugin)。ob娱乐下载
@Chris:同意;),但它不是那么糟糕,一旦你开始利用灵活的“使用”的语句。不需要写的完整名称空间无处不在。
@Massimiliano:原则(2)针对少魔法因为它使代码更健壮和可靠的。我们更关注少特性更加稳定,而不是相反。然而,原则2有很多功能主义1只能梦想,像类表继承、集成支持乐观锁定等等。只是检查文档。我不能代表yml装置,属于“公用事业”,不是真正的核心功能的一部分。我相信乔恩将回答这个问题。
我确信在其他框架中,就像rails他们仍然允许使用yaml数据设备但阻止正在慢慢远离它。
在这个发展阶段我需要的东西滚开,不要让我如此多的类型。
YAML是辉煌的。
但是如果你们不提供YAML解析器我肯定我和丰富的将一个在一起的时候!
任何理由你们决定不去与其他主要的互操作命名标准5.3框架将依赖?
https://gist.github.com/9a677147c42e5fed7d05
创建加载器这种方式对于大多数开发环境就会做的很好的。在生产你想要使用一个sql下降。
——Marijn
如果有任何技术与我们的标准的互操作性问题,请让我知道,如果它只是低/大写或其他cosmetical问题,对不起,没有。
别误会我,主动是伟大的,但是它应该关注技术的互操作性。在这个意义上的最重要的事情在我眼里是类加载和要求名称空间+类名称反映了类文件的目录结构。所以任何人自动装卸机可以装入别人的类文件。我太累了需要自己的每个库自动装卸机(包括symfony + symfony组件)。ob娱乐下载这就是我理解的重要技术标准下的互操作性。
当我使用“php symfonyob娱乐下载学说:建造模式”
我得到了这个:
PHP致命错误:调用定义方法sfDoctrineConvertMappingTask:: setConfiguration () /home/tferreira/tproject/plugins/sfDoctrine2Plugin / lib /任务/ sfDoctrineBuildModelTask.class。php在第79行
致命错误:调用定义方法sfDoctrineConvertMappingTask: setConfiguration () /home/tferreira/tproject/plugins/sfDoctrine2Plugin / lib /任务/ sfDoctrineBuildModelTask.class。php在第79行
谁能帮我个忙吗?谢谢
你\ lib \ plugins \ sfDoctrine2Plugin \ lib \ \ sfDoctrineBaseTask.class任务。php在第9行
1
我也是。
控制台返回:
致命错误:无法重新定义类sfDoctrineBaseTask在D: \ workspace \ SFFULL \
b \ plugins \ sfDoctrine2Plugin \ lib \ \ sfDoctrineBaseTask.class任务。php在第91行