PHP OOP:为域实体提供“身份” - php

这里有点抽象的问题。我正在尝试使用“域模型”模式,并用依赖项来限制其他麻烦-我需要一些有关生成用于Identity Map的Identity的建议。

在我见过的有关Data Mapper模式的大多数示例中(包括本书中概述的一个示例:http://apress.com/book/view/9781590599099),用户似乎使用setter来手动设置给定Domain Object的标识:

$UserMapper = new UserMapper;

//returns a fully formed user object from record sets
$User = $UserMapper->find(1);

//returns an empty object with appropriate properties for completion
$UserBlank = $UserMapper->get();
$UserBlank->setId();
$UserBlank->setOtherProperties();

现在,我不知道我是否读错了示例-但是在第一个$ User对象中,从数据存储中检索了$ id属性(我假设$ id代表行ID)。但是,在后一种情况下,如果尚未从数据存储中获取对象,则如何设置该对象的$ id?
问题是为对象生成有效的“身份”,以便可以通过“身份映射”对其进行维护-因此生成任意整数并不能解决该问题。

我目前的想法是为身份(例如电子邮件)指定不同的字段,并要求它们在生成空白域对象时出现。或者,要求所有对象都完全形成,并使用所有属性作为其标识...几乎没有效率。

(或者,转储域模型概念,并返回到DBAL / DAO / Transaction Scripts……与我见过的ORM实现相比,它似乎越来越优雅……)

参考方案

如果您要控制ID,要覆盖数据存储ID或要更新/删除数据而不必先检索数据(即已经具有POST的ID),则可以使用setId函数。
另一种选择是调用setId()通过“查询”(插入记录)数据存储区以获得下一个可用ID来保留ID。

直到您确实需要使用ID来引用某些内容,才真正将ID设置为什么。没有参数调用setId除了将对象标记为新数据外不会做任何事情。一旦您实际尝试“获取”该ID,便是生成ID的时间。排序惰性ID生成。

方法链PHP OOP - php

通常,在许多框架中,您可以找到使用查询生成器创建查询的示例。通常您会看到:$query->select('field'); $query->from('entity'); 但是,在某些框架中,您也可以像这样$object->select('field') ->from(�…

将一个PHP对象发送到另一个PHP页面 - php

我想知道是否有一种方法可以将PHP对象发送到另一台计算机上的另一个PHP页面?例如-我实现了一个构造Trie的类。现在,在构造Trie之后,我想将对象发送到另一个PHP页面,以便它也可以访问该对象。可行的选择是将其包装到某种编码的JSON请求中,然后将其发送到可以使用jQuery将其中继到所需页面的页面吗?对不起,我对此绝对陌生!将感谢提供的任何帮助。干杯!…

子类可以继承父类的构造函数吗,还是每个类都必须有自己的构造函数? - php

可以说我有一个抽象的ParentClass和ChildClass。 ChildClass扩展ParentClass。现在ParentClass有了这个不错的构造函数:function __construct($tplFile) { $this->$tplFile = $tplFile; } ChildClass会自动继承吗?而且,如果我不向ChildC…

加载CodeIgniter库的替代方法,以便它们与自动完成功能一起正常运行 - php

在CodeIgniter中,可以像下面这样加载库和模型:$my_library = new my_library(); 之所以要这样做,是因为使用$this->load时,我使用的编辑器(Komodo Edit)无法识别用于自动完成的类。 参考方案 在某些情况下,可以像这样加载类,但是除非绝对必要,否则您应该坚持使用CodeIgniter加载器类。我敦…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…