2012-10-16 57 views
6

即时通讯与初学者的教条。我刚安装了pear + doctrine 2.3.3并想测试它。PHP学说初学者:学说 ORM 工具安装程序找不到

测试教义我写了一个名为 “Person”

/** 
* @Entity 
*/ 
class person 
{ 
    /** @Id @Column(type="integer") @GeneratedValue * */ 
    private $id; 

    /** @Column(type="string") * */ 
    private $name; 

    /** @Column(type="string") * */ 
    private $surname; 

    //some getters and setters ... 
} 

类之后,我做了我的bootstrap.php文件,bootstrep_doctrine.php和CLI-config.php文件的文件并运行命令:

doctrine orm:schema-tool:create 

工作正常!

但是现在,当我想在一个“正常”的php文件我bootstrap.php中,创建一个“人”,我收到以下错误:

Fatal error: Class 'Doctrine\ORM\Tools\Setup' not found 
in /var/www/vms/bootstrap_doctrine.php on line 15 

文件看起来像如下:

<?php 
$debug = true; 
if($debug){ 
    error_reporting(E_ALL); 
    ini_set("display_errors", "on"); 
    ini_set("display_startip_errors", "on"); 
} 
require_once '../bootstrap.php'; 

include_once ('testClassOrm.php'); 
$person = new person(); 
$person = new person(); 
$person->setName("Hans"); 
?> 

bootstrap.php中:

if(!class_exists("Doctrine\Common\Version", false)){ 
    require_once 'bootstrap_doctrine.php'; 
} 

bootstrap_doctrine.php

use Doctrine\ORM\Tools\Setup; 
use Doctrine\ORM\EntityManager; 

$paths = array("entities/"); 
$isDevMode = true; 

// the connection configuration 
$dbParams = array(
    'driver' => 'pdo_mysql', 
    'user'  => 'TEST', 
    'password' => 'TEST', 
    'dbname' => 'test', 
); 

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode); 
$em = EntityManager::create($dbParams, $config); 

我检查/ usr/share/pear /是否在php_include路径中。它是..

require_once 'System.php'; 
var_dump(class_exists('System', false)); 

返回true:

但是这一次确实返回false:

use Doctrine\ORM\Tools\Setup; 
var_dump(class_exists('Setup', false)); 

我做错什么了吗?

问候

+0

你忘了设定自动加载!你是如何安装ORM的? – Ocramius

回答

3

是的,它似乎是自动加载缺失,自动加载最简单的方法你的类是使用作曲家也可以下载相关性,如学说。要做到这一点,您必须将composer.phar安装在您的项目根目录或全局安装在您的PATH系统变量(/usr/local/bin/是推荐的文件夹)中声明的文件夹中。

然后,您必须编辑项目根文件夹中的composer.json文件。在这个文件中,您将定义您的项目的依赖关系以及您希望能够加载的课程。

{ 
    "require": { 
     "Doctrine/ORM": "2.3.3" 
    }, 
    "autoload": { 
     "psr-0": {"MyProject\\Models\\": "src/models/"} 
    } 
} 

然后,所有你需要做的就是打开从项目的根文件夹终端输入composer install。这将创建一个包含所有下载的依赖关系的供应商文件夹。您还将在此供应商文件夹中获得autoload.php文件。你只需要在你的php文件中包含这个自动加载器,以便能够使用你在composer.json的自动加载部分声明的所有依赖和所有命名空间。

,您可以得到更多的相关信息约作曲家在这里: https://getcomposer.org/ 您也可以浏览可用的软件包这里: https://packagist.org/

希望这将有助于