Attualmente sto sviluppando su Windows con WampServer
e ho Composer
funzionante (con OpenSSL
), con Propel installato senza problema e tutto sembra funzionare correttamente. Tuttavia, il mio progetto deve ora utilizzare lo Equal Nest Behaviour
trovato here.Installazione di comportamenti Propel con Composer
Ho pensato che questo mi avrebbe permesso di usare il comportamento di propulsione. Nel mio schema.xml
ho il seguente frammento di codice:
<table name="friend">
<behavior name="equal_nest">
<parameter name="parent_table" value="user" />
</behavior>
</table>
Ma quando corro propel-gen sql
ottengo l'errore:
[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties
La documentazione dice:
Then, if you don't use Composer, or an autoloader in your application, add the following configuration to your build.properties or propel.ini file:
Facendomi presumo che ho didn è necessario inserire il file build.properties. Tuttavia, mettendolo in mi dà il seguente errore:
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
non ero sicuro se fosse qualcosa a che fare con caricamento automatico non funziona o spazi dei nomi (il mio schema ha uno spazio dei nomi, ma ottengo questo stesso errore durante la rimozione anche lui).
Il mio file composer.json
assomiglia a questo:
{
"require": {
"craftyshadow/propel-equalnest-behavior": "dev-master"
}
}
Nota: ho avuto Propel in là se stessa, ma come il comportamento equalnest richiede esso stesso sto solo lasciando che fare il suo lavoro.
Quindi, qual è il modo corretto di utilizzare i comportamenti di Propel con Composer e, se lo faccio correttamente, perché vedo gli errori sopra riportati?
Aggiornamenti
ho aggiunto questa linea in cima EqualNestBehaviour.php
:
include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';
E la SQL sembra essere generato correttamente senza errori. Tuttavia, cambiare quel file non mi sembra intelligente! Potrebbe essere un problema con l'autoloading? C'è qualcosa che puoi pensare di poter fare per testarlo?
Posso confermare che l'utilizzo di Equal Nest Behaviour
nel mio codice attuale Propel
funziona bene, utilizzando funzioni come addFriends()
- questo è con i suddetti cambiamenti ancora al loro posto.
Nel mio file autoload_namespaces.php
Ho il seguente:
<?php
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
Suppongo che tu abbia eseguito l'installazione di 'php composer.phar'? Forse prova ad installare sia Propel che Behavior tramite Composer (sembra che sia solo il Behavior) .. – Sam
No, io uso l'installazione globale, quindi solo "installer install" funziona. Come ho detto sopra, il comportamento 'richiede' s Propel 1.6. * Stesso. Ovviamente, la propulsione è installata pubblicamente o non sarei in grado di vedere i messaggi di errore di Propel. – LeonardChallis
Oh, mi sono perso il comportamento incluso Propel 1.6. Sembra davvero un problema di auto-caricamento, proverei con Propel nel file Composer - per ogni evenienza. – Sam