Errore Namespaces A Funzione Php Use

Ciao a tutti,

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.

Qualcuno può aiutarmi?

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;

    }

}



Grazie mille per la tempestiva risposta.

Ho provato la tua soluzione, ma sembra ancora non andare.

Se volessi utilizzare questa libreria senza l’ausilio del composer?

Posso "convertirla" in modo da importare solo le classi che mi occorrono?

Altrimenti dove posso trovare e capire meglio come funziona l’autoload in Yii?

Grazie mille

Cosa intendi con "non va"?

Non riesco ad importare in modo corretto la libreria con le relative classi.

Ho sempre un errore 500 dal server.

Hai controlalto i log? Il server web dovrebbe aver generato un registro degli errori.