- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对 Rails ActiveRecord、Doctrine for PHP(以及类似的 ORM)背后的一些设计很感兴趣。
显然这是一个学术问题,但欢迎各种性质的答案!
(我选择的语言是 OO PHP5.3!)
最佳答案
链式方法调用与 ORM 问题正交,它们在 OOP 中无处不在。可链式方法只是返回对当前对象的引用,允许调用返回值。在 PHP 中
class A {
public function b() {
...
return $this;
}
public function c($param) {
...
return $this;
}
}
$foo = new A();
$foo->b()->c('one');
// chaining is equivilant to
// $foo = $foo->b();
// $foo = $foo->c();
至于如何构造查询,有两种方法。在像 ORM 这样的 ActiveRecord 中,有检查数据库元数据的代码。大多数数据库都有某种 SQL 或类似 SQL 的命令来查看此元数据。 (MySQL的DESCRIBE TABLE
,Oracle的USER_TAB_COLUMNS
表等)
一些 ORM 让您使用 YAML 等中性语言描述您的数据库表。其他人可能会从您创建对象模型的方式推断出数据库结构(我想说 Django 这样做,但我已经有一段时间没看过它了)。最后还有一种混合方法,其中使用了前两种技术中的任何一种,但提供了一个单独的工具来自动生成 YAML/等。或类文件。
如果已知表的名称和数据类型,则很容易实用地编写返回所有行或满足特定条件的一组特定行的 SQL 查询。
关于你的最后一个问题,
How does an ORM manage the queries while sustaining the arbitrary nature of all that is expected of it?
我认为答案是“不太好”。一旦您超越了一张表、一个对象的隐喻,每个 ORM 都有不同的方法和哲学,即应该如何使用 SQL 查询来建模对象。虽然在抽象中,它就像添加基于 ORM 的假设构造查询的新方法一样简单(即 Zend_Db_Table 的“findManyToManyRowset”方法)
关于php - 幕后 : How does an ORM "think"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1159494/
对于要执行的JS代码,由解析器逐行解析,如果代码无效,则显示错误信息。如果一切正确,那么解析器会生成一个称为抽象语法树的数据结构。然后使用此抽象语法树为解释器生成字节码以供执行。 以上快速分析可以总结
似乎如果我在 () 中包装一个字符串、 bool 值或数字原始值,我会得到一个包装原始值的字符串、 bool 值、数字对象。这个结论正确吗? 此外,似乎 () 对于字符串和 bool 值是可选的,但对
我有几个关于 Java 中的嵌套类的问题。 关于内存分配,嵌套类是如何“隐藏”的? 您不能在嵌套类中声明静态变量(我认为确切的错误是静态属性只能在顶级类中声明)。为什么会这样?嵌套类还有哪些其他限制?
对于没有使用 Lambda Expresstions 经验的人,下面的代码让它看起来很神奇: int totalScore = File.ReadLines(@"c:/names.txt")
一个朴素的类型系统会将对象存储为指向其类型的指针(其中包含许多有用的信息,如 vtable、对象大小等),然后是其数据。如果.Net 有这样的类型系统,object在 32 位系统上占用 4 个字节,
我有以下用于字符串加密和解密的JAVA代码: public class AES { private SecretKeySpec setKey(String myKey) {
我试图了解 React 中的“组件”。 我有几个问题,所以我认为社区是提出问题的最佳场所。 1 - 当我们这样做时: var foo = React.createClass ({ ... }); Co
我想知道 ref 和 out 关键字在幕后是如何工作的?例如,如果我们在方法上使用它,它会把这个值类型变量放入某个类中以便像使用引用类型一样使用它吗? 最佳答案 in order to work wi
我对 Rails ActiveRecord、Doctrine for PHP(以及类似的 ORM)背后的一些设计很感兴趣。 ORM 如何设法实现链式访问器等功能,它们通常需要多深的工作? ORM 如何
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: C# “as” cast vs classic cast 我想知道当我做类似的事情时,.Net CLR 的底
好吧,这似乎是一个菜鸟问题,但我认识的许多 Web 开发人员都没有完全理解这个问题。 基本上,如何使用 FileUpload 控件的上传事件将文件从网页文件输入框上传到网络服务器(例如托管 .net
我很熟悉,按下返回键会导致 activity 被“销毁”,或者当开发人员调用函数 finish() 时,或者当系统需要时内存等... 并且还熟悉我们需要在 onDestroy 中执行清理过程,例如 u
我正在使用 GameViewController 和 GameScene。这个链接到 GameScene.sks。在 GameViewController 中,我将 aspect radio 设置为
关于 EF 的另一个问题: 我想知道在遍历查询结果时幕后发生了什么。 例如,查看以下代码: var activeSources = from e in entitiesContext.Sources
你好,我有一个关于 d3 的性质的问题,我认为这是关于 d3 的非常深入的细节。 据我了解, d3 中的变量声明,如 var svg = d3.select('boby').append('svg'
我是一名优秀的程序员,十分优秀!