2013-07-06 3 views
0

Я недавно тестировал этот Doctrine2 style Neo4j wrapper. Хотя я никогда раньше не использовал Доктрину, я уходил от замечательных примеров с страницы Github, а также документации Doctrine и, похоже, не получил определенного момента. Я извлек библиотеку Neo4j-PHP-OGM, загрузил Doctrine2 с помощью Composer и включил EntityManager процедурно (для тестирования) в пределах bootstrap.php.Обертка стиля Neo4j и Doctrine2

/bootstrap.php

require __DIR__ . '/vendor/autoload.php'; 

require __DIR__ . '/lib/HireVoice/Neo4j/Annotation/Entity.php'; 
require __DIR__ . '/lib/HireVoice/Neo4j/Annotation/Auto.php'; 
require __DIR__ . '/lib/HireVoice/Neo4j/Annotation/Property.php'; 
require __DIR__ . '/lib/HireVoice/Neo4j/Annotation/Index.php'; 
require __DIR__ . '/lib/HireVoice/Neo4j/Annotation/ManyToOne.php'; 
require __DIR__ . '/lib/HireVoice/Neo4j/Annotation/ManyToMany.php'; 

$em = new HireVoice\Neo4j\EntityManager(array(
    'transport' => 'curl', // or 'stream' 
    'host' => 'localhost', 
    'port' => 7474, 
    // 'username' => null, 
    // 'password' => null, 
    // 'proxy_dir' => '/tmp', 
    // 'debug' => true, // Force proxy regeneration on each request 
    // 'annotation_reader' => ... // Should be a cached instance of the doctrine annotation reader in production 
)); 

/User.php

namespace Entity; 

use HireVoice\Neo4j\Annotation as OGM; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* @OGM\Entity 
*/ 
class User 
{ 
    /** 
    * @OGM\Auto 
    */ 
    protected $id; 

    /** 
    * @OGM\Property 
    * @OGM\Index 
    */ 
    protected $fullName; 

    function setFullName($fullname){ 
     $this->fullname = $fullname; 
    } 
} 

/save.php

require 'bootstrap.php'; 
require 'User.php'; 

$repo = $em->getRepository('Entity\\User'); 

$jane = new User; 
$jane->setFullName('Jane Doe'); 

$em->persist($jane); 
$em->flush(); 

В производстве, я буду самозарядные классы сущностей, сейчас Я просто требую их. При загрузке save.php в браузере, он выдает эту ошибку:

Fatal error: Class 'User' not found in C:\htdocs\neo4j-php\ogm\save.php on line 7 

Я не знаю, почему так User.php класса объектов в настоящее время требуется после bootstrap.php. Любые предложения относительно того, почему? Заранее спасибо.

ответ

3

Ваша проблема, похоже, связана с пространствами имен PHP больше, чем с библиотекой.

require 'bootstrap.php'; 
require 'User.php'; // Are you certain the path is correct? 

$repo = $em->getRepository('Entity\\User'); 

$jane = new Entity\User; // Need to specify the full class path unless you import it locally 
$jane->setFullName('Jane Doe'); 

$em->persist($jane); 
$em->flush(); 
+0

Спасибо, мне просто нужно было указать путь полного класса. – Dan

Смежные вопросы