Подтвердить что ты не робот

Установка поведения Propel с помощью Composer

В настоящее время я разрабатываю Windows с WampServer и Composer работает (с OpenSSL), а Propel установлен без проблем, и все работает нормально. Тем не менее, мой проект теперь должен использовать Equal Nest Behaviour найденный здесь.

Я думал, что это позволит мне использовать поведение движения. В моем schema.xml у меня есть следующий фрагмент:

<table name="friend">
  <behavior name="equal_nest">
    <parameter name="parent_table" value="user" />
  </behavior>
</table>

Но когда я запускаю propel-gen sql, я получаю ошибку:

[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties

В документации написано:

Затем, если вы не используете Composer или автозагрузчик в своем приложении, добавьте следующую конфигурацию в файл build.properties или propel.ini:

Предполагаю, что мне не нужно было вставлять файл build.properties. Однако, вставив его, возникает следующая ошибка:

PHP Fatal error:  Class 'EqualNestParentBehavior' not found in C:\home\movesleag
ue.com\vendor\craftyshadow\propel-equalnest-behavior\src\EqualNestBehavior.php o
n line 74

Я не был уверен, что это связано с автоматической загрузкой не работающих или пространств имен (у моей схемы есть пространство имен, но я получаю эту же ошибку при ее удалении).

Мой файл composer.json выглядит следующим образом:

{
    "require": {
        "craftyshadow/propel-equalnest-behavior": "dev-master"
    }
}

Примечание. У меня действительно был Propel, но, поскольку это поведение равносильно самому себе, я просто позволяю этому делать свою работу.

Итак, какой правильный способ использовать поведение Propel с Composer, и если я делаю это правильно, почему я вижу ошибки выше?

Обновление

Я добавил эту строку в начало EqualNestBehaviour.php:

include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';

И SQL, кажется, генерируется правильно без ошибок. Однако изменить этот файл мне не кажется умным! Это может быть проблема с автозагрузкой? Есть ли что-нибудь, что вы можете придумать, что я могу сделать, чтобы проверить это?

Я могу подтвердить, что использование Equal Nest Behaviour в моем текущем коде Propel отлично работает, используя такие функции, как addFriends() - это с вышеуказанными изменениями все еще на месте.

В моем файле autoload_namespaces.php у меня есть следующее:

<?php

// autoload_namespaces.php generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
);
4b9b3361

Ответ 1

Это проблема с автозагрузкой.

Пожалуйста, проверьте, что у вас

propel.behavior.equal_nest.class = vendor.craftyshadow.propel-equalnest-behavior.src.EqualNestBehavior

в ваших build.properties(для Propel).

Пожалуйста, убедитесь, что созданный автором файл автозагрузчика включен во время процесса начальной загрузки вашего приложения. Composer создает файл "vendor/autoload.php". Если вы включите его, вы получите бесплатную автозагрузку. И все, установленное Composer, найдено автоматически.

require 'vendor/autoload.php';