Установка продвинуть поведения с композитором
В настоящее время я разрабатываю 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 или автозагрузчик в своем приложении, добавьте в сборку следующую конфигурацию.свойства или пропеллер.ini-файл:
Заставляя меня предположить, что мне не нужно было вставлять сборку.файл свойств. Однако, вводя его, я получаю следующую ошибку:
PHP Fatal error: Class 'EqualNestParentBehavior' not found in C:homemovesleag
ue.comvendorcraftyshadowpropel-equalnest-behaviorsrcEqualNestBehavior.php o
n line 74
Я не был уверен, что это как-то связано с автоматической загрузкой не работает или пространства имен (моя схема имеет пространство имен, но я получаю ту же ошибку при удалении его тоже).
Мой composer.json
файл выглядит вот так:
{
"require": {
"craftyshadow/propel-equalnest-behavior": "dev-master"
}
}
Примечание: у меня действительно был пропеллер, но поскольку самое равное поведение требует его самого, я просто позволяю ему делать свою работу.
Итак, как правильно использовать поведение 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(
);
1 ответ:
Это проблема с автоматической загрузкой.
Пожалуйста, проверьте, что у вас есть
propel.behavior.equal_nest.class = vendor.craftyshadow.propel-equalnest-behavior.src.EqualNestBehavior
В вашей сборке.свойства (для пропеллера).
Пожалуйста, убедитесь, что созданный композитором файл autoloader включен в процесс загрузки вашего приложения. Композитор генерирует "вендор / автопогрузчик.PHP-файл. Если вы включите его, то получите автоматическую загрузку бесплатно. И все, что установлено композитором, будет найдено автоматически.
require 'vendor/autoload.php';