È possibile installare le librerie Kohana per ORM in PHP senza utilizzare l'intero framework?

StackOverflow https://stackoverflow.com/questions/223788

  •  03-07-2019
  •  | 
  •  

Domanda

In una domanda precedente, ho chiesto informazioni su varie librerie ORM. Si scopre che Kohana sembra molto pulita ma funzionale ai fini di ORM. Ho già un framework MVC in cui sto lavorando però. Se non voglio eseguirlo come framework, qual è il set di file giusto da includere per darmi solo i file di classe base DB e ORM?

Aggiornamento:

Ho fatto un salto e ho iniziato a guardare il codice sorgente ORM. Una cosa mi ha subito confuso .. tutte le classi ORM hanno il nome della classe aggiunto con _CORE, ovvero ORM_Core ORM_Iterator_Core, ma il codice ovunque estende la classe ORM. Il problema è che ho cercato l'intera base di codice in 6 modi diversi, e non ho mai visto un semplice def di classe ORM né un def di interfaccia ORM o altro. Qualcuno potrebbe illuminarmi su dove avviene quella magia?

È stato utile?

Soluzione

Perché non semplicemente avere un

class ORM extends ORM_Core {} 

da qualche parte nel tuo codice? Ciò elimina la necessità di utilizzare qualsiasi codice del caricatore.

Avrai anche bisogno dei metodi Kohana_Exception, la libreria Database (e il driver appropriato), i metodi Kohana :: config (), Kohana :: auto_load (), Kohana :: log () (cerca Database.php per quelli).

Kohana è un ottimo framework MVC, ma non è progettato per essere smontato in blocchi del genere. Puoi anche indagare su Doctrine , un altro ORM per PHP (progettato per essere autonomo)

Altri suggerimenti

Si scopre che Kohana utilizza il caricamento della classe magica in modo che se una classe definita con estensione _Core non esiste come classe

vale a dire. ORM_Core esiste, ma ORM no, quindi Kohana definirà magicamente una classe ORM Poiché il pacchetto utilizza il 100% di caricamento in classe magica.

Nel caso qualcuno fosse interessato, sto documentando i miei risultati qui in modo che tutti possano trovarli in seguito:

From Kohana.php in the system directory:

<-- snip if ($extension = self::find_file($type, self::$configuration['core']['extension_prefix'].$class))
{
// Load the extension
require $extension;
}
elseif ($suffix !== 'Core' AND class_exists($class.'_Core', FALSE))
{
// Class extension to be evaluated
$extension = 'class '.$class.' extends '.$class.'_Core { }';
-->

<-- snip

// Transparent class extensions are handled using eval. This is
// a disgusting hack, but it gets the job done.
eval($extension);

-->

Quindi fa una valutazione ..

Zak, controlla l'ORM del framework mantenibile. http://framework.maintainable.com/mvc/3_model.php#c3. 7 Leggi attentamente, sono sicuro che ti piacerà. Lo inserisco in modo più dettagliato in: Qual è il framework ORM più semplice da usare per PHP?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top