2016-03-27 3 views
0

Ich versuche, die Klasse 'evseevnn \ Cassandra \ Database' für diesen Namensraum ohne Erfolg aufzurufen. Ich verlasse mich dabei auf einen ähnlichen Fall mit der gleichen Architektur selbst, wo ich sie bekomme.Klasse 'evseevnn Cassandra Database' nicht gefunden

Die Architektur ist wie folgt,

myproject\ 
    | 
    application\ 
     | 
     core\ 
      controller.php 
    ---------- 
    ---------- 
     | 
     vendor\ 
      | 
      evseevnn\ 
       | 
       cassandra\ 
        | 
        src\ 
         Database.php 

Dies ist der Code-Schnipsel, controller.php Datei ist

use \evseevnn\Cassandra\Database as Database; 
//require '../vendor/src/evseevnn/cassandra/Database.php'; 

class Controller 
{ 

    public $db = null; 

    public $model = null; 

    function __construct() 
    { 
     $this->openDatabaseConnection(); 
     ...... 
    } 

    private function openDatabaseConnection() 
    { 
     $nodes = [ 
      DB_HOST 
     ]; 

     $this->db = new Database($nodes, DB_DEFAULT_KEYSPACE); 
     $this->db->connect(); 
    } 

    ....... 
    ....... 
} 

und die database.php Datei sein würde, wie folgt,

namespace evseevnn\Cassandra; 

use ...... 
use ...... 

class Database { 

    ...... 
    ...... 
} 

Da die Architektur identisch ist und auf demselben WAMP-Server bereitgestellt wird, funktioniert sie nicht. Wie soll ich das beheben?

+1

Müssen Sie den Composer-Autoloader zufällig hinzufügen? – Chris

+0

Ja, ich habe es im vorherigen Fall getan. Dieses Mal habe ich die ZIP-Datei heruntergeladen, entpackt und in der Anwendung bereitgestellt. Ich habe gegoogelt und ich habe keine Möglichkeit gefunden, den Komponisten für diesen Fall zu verwenden. Dies ist der Link für den Treiber php auf GitHub, https://github.com/evseevnn/php-cassandra-binary – oggie0563

+0

Okay, also wenn Sie nicht Composer verwenden, müssen Sie nicht die relevante PHP-Datei "include" ? – Chris

Antwort

0

Sie haben Komponisten?

, wenn ... ja ..

require_once 'vendor/autoload.php'; 

Was Ihre PHP-Version?

Namespaces ermöglichen sind nur PHP 5.3+

0

Hier ist die composer.json Datei, die ich verwendet, um den Treiber zu installieren,

{ 
    "name": "root/testclient", 
    "require": { 
     "evseevnn/php-cassandra-binary": "dev-master" 
    }, 
    "authors": [ 
     { 
      "name": "Evseev Nikolay", 
      "email": "[email protected]" 
     } 
    ] 
} 

Die controller.php Datei sieht wie folgt aus,

require APP . '/vendor/autoload.php'; 
use evseevnn\Cassandra\Database as Database; 

class Controller 
{ 

    ------ 
    ------ 

    private function openDatabaseConnection() 
    { 
     $nodes = [ 
      DB_HOST 
     ]; 

     $this->db = new Database($nodes, DB_DEFAULT_KEYSPACE); 
     $this->db->connect(); 
    } 

    ------ 
} 

Das funktioniert gut für mich.