代码之家  ›  专栏  ›  技术社区  ›  Bryan M.

将条令与Zend框架1.8应用程序集成

  •  4
  • Bryan M.  · 技术社区  · 16 年前

    我对使用条令作为我正在编写的新Zend框架应用程序的ORM很感兴趣。我正试图找出尽可能简单地集成它的最佳方法。我发现的每一个例子都是不同的,其中很多都提前更新了zf 1.8中新的自动加载功能。他们都还没有为我工作过。

    有没有人有好的方法来做这个?我倾向于把它放在我的引导文件中,但有些人建议做一个Zend_应用程序资源插件。最困难的部分似乎是让加载路径正确地为条令名称空间和模型类工作,默认情况下这些类不遵循Zend自动加载约定。

    有什么想法吗?谢谢。

    3 回复  |  直到 14 年前
        1
  •  3
  •   Daff    16 年前

    几周前,我为条令和Zend框架编写了一个资源引导程序,并将其全部转换为一个小包装框架,因为我认为ZF和条令是一个伟大的团队。 你可以在这里阅读这篇文章: http://coffeecoders.de/2009/06/using-the-zend-framework-18-bootstrapper-and-doctrine-110/

    它可以通过引导资源配置进行完全配置(也包括示例)。不幸的是,条令在模型文件夹中搜索与文件名具有相同类名(与ZF命名方案不匹配)的模型,因此实际上不可能取消条令自动加载程序的注册。 资源加载器如下所示:

    <?php
    /**
     * Doctrine model loading bootstrap resource. Options must provide a connection string.
     * directory option for model directory is optional (default is ./models).
     * Further options will be set for the Doctrine manager via setAttribute (e.g. model_loading). 
     * @author daff
     */
    class Cuckoo_Application_Resource_Model extends Zend_Application_Resource_ResourceAbstract
    {
        public function init()
        {
            $manager = Doctrine_Manager::getInstance();
            $options = $this->getOptions();
    
            foreach($options as $key => $value)
            {
               if($key != 'connection' && $key != 'directory')
                        $manager->setAttribute($key, $value);
            }
    
            if(empty($options['connection']))
                throw new Exception("No database connection string provided!");
            Doctrine_Manager::connection($options['connection']);
            if(empty($options['directory']))
                $dir = './models';
            else
                $dir = $options['directory'];
            Doctrine::loadModels(realpath($dir));
            return $manager;
        }
    }
    
        2
  •  1
  •   radalin    15 年前

    http://weierophinney.net/matthew/archives/220-Autoloading-Doctrine-and-Doctrine-entities-from-Zend-Framework.html

    看看这篇文章。它给出了详细的说明、目录结构以及如何使用自动加载功能。

        3
  •  0
  •   jason    16 年前

    就自动装载而言,您可以很容易地将条令装载机与新Zend_装载机_自动装载机堆栈一起使用。看一看 this page 尤其是在它提到pushAutoloader()方法的地方。

    以下是基本的运行情况:

    $autoloader = Zend_Loader_Autoloader->getInstance();
    $autoloader->pushAutoloader(array('Doctrine', 'autoload'), 'Doctrine');
    

    如果堆栈中的其他自动加载器没有找到条令,则只对以条令开始的类使用条令自己的自动加载器。

    希望这有点帮助。