我正在使用MSSQL,并希望实现WITH
函数(根据使用ZF2,创建一个with with语句?(。为此,我正在扩展ZendDbSqlSelect
类添加添加WITH
功能所需的属性和方法。我现在如何告诉我的应用程序使用此选择类而不是Zend One?
一种方法是在我的Composer.json文件中指定autoload
:
"autoload": {
"psr-4": {
"Zend\Db\Sql\": "vendor/rpk/Rpk/Zend/Db/Sql"
}
}
在查看Zend文件夹之前,它将在我的供应商文件夹中查看任何Sql
名称空间的内容,但这要求我将整个Zend Select类复制到我的选择类中 - 这是不希望的,因为我的课程不会受益从未来的补丁到Zend分支。
尝试使用Bootstrap脚本中的class_alias()
指令来使您的Select
替换类(带有命名空间(与ZF2的Select
类的完整命名空间 -
class_alias("Your\Namespace\Select", "Zend\Db\Sql\Select");
不幸的是,这只是您上面给出的自动加载定义的更具针对性的版本,不幸的是,您仍然需要重新实现Select
类的版本,以便在Zend Select
类中包括所有当前代码意识到没有功能可以从另一个类中扩展一个类,然后再将扩展类别划出原始类别。
如果您使用更好的反射来动态加载并提取" zend"选择类的代码,则可以在代码中重命名类(可能是在某个地方cache,因此不需要执行这个昂贵的操作不断(并从中扩展您的选择类。将该扩展名与原始类名称混音不会是问题。
免责声明:我知道一些漫游地,尤其是所有被列为更好反思的作者的人。他们是体面的,乐于助人的人,即使有些习惯。