sto utilizzando questa libreria per analizzare gli URL di Amazon.
Ho seguito le istruzioni per installare e configurare il composer.json, e ho provato la libreria in un file PHP esterno (nella root della mia macchina) e funziona tutto.
Ora voglio importare questa libreria all’interno di un mio controller per effettuare delle operazioni, ma sembra che ci sia qualche problema con la funzione “use”.
Questo è la mia funzione all’interno del mio controller:
protected function getAmazonPrice($url, $product_id) {
require_once "vendor/autoload.php";
use ApaiIO\Configuration\GenericConfiguration;
use ApaiIO\Operations\Search;
use ApaiIO\ApaiIO;
use ApaiIO\Operations\Lookup;
$conf = new GenericConfiguration();
...
return $price;
}
Questa configurazione in un file esterno funziona ma nel mio controller no.
Le funzioni all’interno di un controller si chiamano metodi. Una funzione ed un metodo sono due cose differenti.
Detto questo,. la “use” ha un significato vero e proprio ed utilizzata all’interno di una classe php importa un trait e non una classe.
Altro fatto importante, è che l’autoloader di Yii non è stato pensato per lavorae con PSR-0. In genere quando usiamo il composer per librerie esterne, queste librerie possono comodamente essere importate usando l’autoloader del composer. Quindi proverei a caricare quello all’interno della tua classe e, cosa importante, la keyword “use” va tra la definizione di un namespace, se presente, e la dichiarazione della classe.
Prova con questa soluzione
<?php
require_once "vendor/autoload.php";
use ApaiIO\Configuration\GenericConfiguration;
use ApaiIO\Operations\Search;
use ApaiIO\ApaiIO;
use ApaiIO\Operations\Lookup;
class TuoController extends Controller {
protected function getAmazonPrice($url, $product_id) {
$conf = new GenericConfiguration();
return $price;
}
}