2015-02-14 17 views
14

Sto creando un'applicazione in CakePHP 3.0, in questa applicazione voglio disegnare grafici SVG di dati usando una classe php che ho scritto. Quale sarebbe il modo corretto di usare questa classe nel mio progetto CakePHP 3?Come posso utilizzare la mia classe esterna in CakePHP 3.0?

In particolare:

  • Quali sono le convenzioni di denominazione? Devo usare uno spazio dei nomi specifico?

  • Dove inserisco il file che contiene la classe PHP?

  • Come posso includerlo e usarlo in un controller o in una vista?

+1

Hey Jon, benvenuto per Stack Overflow! Questa domanda sarà probabilmente vicina perché non hai una specifica domanda di programmazione, ma vorrei indicarti la giusta direzione. Innanzitutto, Cake 3.0 utilizza l'autoloading [PSR-4] (http://www.php-fig.org/psr/psr-4/), quindi è un buon punto di partenza. Inoltre, leggi le [convenzioni e i livelli di Cake's MVC] (http://book.cakephp.org/3.0/en/intro.html) per decidere dove potrebbe appartenere la tua classe. Oppure [crea il tuo] (http://culttt.com/2014/05/07/create-psr-4-php-package/) Pacchetto PSR-4 e caricalo da qualche parte all'interno di Cake (nel livello appropriato è probabilmente il migliore). – jeremyharris

risposta

28

Quali sono le convenzioni di denominazione? Devo usare uno spazio dei nomi specifico?

La classe dei grafici SVG dovrebbe avere uno spazio dei nomi. Per gli spazi dei nomi è possibile vedere http://php.net/manual/en/language.namespaces.rationale.php

Dove inserisco il file che contiene la classe PHP?

  1. Creare una cartella per autore (qui potrebbe essere il vostro nome, come sei l'autore) in vendor

  2. quindi creare il codice categoria all'interno di esso convenzione è fornitore/$ autore/$ pacchetto . Si può leggere di più http://book.cakephp.org/3.0/en/core-libraries/app.html#loading-vendor-files

Come posso includerlo e utilizzarlo in un controller o una vista? ..

a) Per includere:

require_once (.ds root 'Venditore' DS 'MyClass' DS 'MyClass.php');...

(sostituire MyClass dal nomecartella e MyClass.php dal filename.php)

b) Per utilizzarlo:

aggiungere use MyClass\MyClass; nel controller

Per esempio Voglio aggiungere MyClass in un controller. Passi che hanno lavorato per me

  1. Creazione fornitore cartella \ MiaClasse
  2. incollare MyClass.php in quella cartella
  3. aggiungendo namespace MyClass; in cima MyClass.php

MyClass.php hanno seguente codice, ad esempio:

namespace MyClass; 


class MyClass 
{ 
    public $prop1 = "I'm a class property!"; 

    public function setProperty($newval) 
    { 
     $this->prop1 = $newval; 
    } 

    public function getProperty() 
    { 
     return $this->prop1 . "<br />"; 
    } 
} 
  1. Aggiunta use MyClass\MyClass; nella parte superiore del regolatore

  2. Poi compresi nella mia azione del controller. La mia azione campione

    public function test() 
    { 
        require_once(ROOT .DS. "Vendor" . DS . "MyClass" . DS . "MyClass.php"); 
    
        $obj = new MyClass; 
        $obj2 = new MyClass; 
    
        echo $obj->getProperty(); 
        echo $obj2->getProperty(); 
        exit; 
    } 
    
+0

Questa è stata davvero una bella risposta! Risolve completamente il mio problema e non lasciava nulla a cui pensare. Questo dovrebbe essere aggiunto al manuale di CakePHP in qualche modo, sarebbe ok se ne prendevo parte e ho fatto una richiesta di pull sul manuale di CakePHP 3.0? Comunque, grazie! =) –

+0

Puoi sentirti libero di fare una richiesta di pull.-grazie –

+0

sto usando questo metodo e funziona bene ma ho ancora un problema in realtà ho una classe come Myclass e la sua estensione della seconda classe nel core php che ho appena includi il file e poi estendi la classe perché è astratto ma non so come usarlo in cakephp –

Problemi correlati