Использование пространств имен PHP 5.3 (Doctrine2) с классами Zend Framework - PullRequest
2 голосов
/ 28 июля 2010

У меня возникла ситуация, когда моя модель доктрины Post находится в пространстве имен Application\Entities, и я хочу попытаться реализовать Zend_Acl_Resource_Interface.я получаю ошибку

Неустранимая ошибка: интерфейс «Application \ Entities \ Zend_Acl_Resource_Interface» не найден в D: \ Projects \ Websites \ php \ ZendFram ework \ LearningZF \ library \ Application \ Entities \ Post.phpв строке 8

namespace Application\Entities;
use DoctrineExtensions\NestedSet\Node;

/**
 * @Entity @Table(name="posts")
 */
class Post implements Node, Zend_Acl_Resource_Interface {

обновить

, если я попытаюсь

class Post implements Node, \Zend_Acl_Resource_Interface {

Неустранимая ошибка: интерфейс 'Zend_Acl_Resource_Interface' не найден в D: \Проекты \ Веб-сайты \ php \ ZendFramework \ LearningZF \ library \ Application \ Entities \ Post.php в строке 8

Ответы [ 3 ]

2 голосов
/ 28 июля 2010

Используете ли вы ветку ZF 2.0 или стабильную, например, 1,10? Ваш автозагрузчик настроен на загрузку классов по схеме именования ZF?

Вы можете использовать инструмент преобразования, который разработчики ZF использовали для преобразования ZF в использование пространств имен:

0 голосов
/ 29 июля 2010

Я собираюсь поставить это как ответ, так что я могу пометить этот qn как отвеченный, если у кого-то нет других ответов, это фактически обходной путь, который я использовал. я не слишком уверен, почему это работает точно, или, скорее, почему автозагрузчик Zend вышел из строя

я добавил require_once, чтобы включить Zend_Acl_Resource_Interface

namespace Application\Entities;
use DoctrineExtensions\NestedSet\Node;
require_once "Zend/Acl/Resource/Interface.php";

/**
 * @Entity @Table(name="posts")
 */
class Post implements Node, \Zend_Acl_Resource_Interface {

Я думаю, что лучшим решением будет инструмент конвертации в @ ответ Гордона . но я не могу исправить все ошибки, которые я получаю с "нечистым" преобразованием еще. пути сломаны.

0 голосов
/ 28 июля 2010

Насколько я помню, Zend Framework не использует пространства имен (до тех пор, пока не выйдет 2.x), поэтому его классы находятся в глобальном пространстве имен. Попробуйте class Post implements Node, \Zend_Acl_Resource_Interface {

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...