在PHP中使用PSR4命名自动加载

时间:2015-02-06 16:04:21

标签: php autoload psr-4

我有以下库结构

C:\WWW\WEBS
|   users.php
|
\---lib
    |   Api.php
    |   Server.php
    |   TimeSync.php
    |
    \---TimeSync
            Ntp.php
            Protocol.php
            Sntp.php

在server.php中我有

<?php
namespace lib; 
class Server extends Api
{
}
?>

在users.php中我将其用作

<?php
  use lib\Server;
  $objServer = new Server();
?>

我也尝试过像use lib\Server;

一样

但在两种情况下都是说

致命错误:Class&#39; lib \ Server&#39;

中找不到
  

第7行的C:\ www \ Experimentation \ webserviceserver \ users.php

我出错的地方。我应该使用自动加载器吗?

1 个答案:

答案 0 :(得分:0)

您需要使用自动加载器。 您可以使用Composer中提供的那个。 安装完成后(在项目的根目录下),放入一个composer.json文件,在里面复制以下代码:

 {
    "autoload":{
        "psr-4":{
            "Lib\\" : "lib/"
        }
    }
 }

然后使用命令composer dumpautoload。这会将自动加载文件复制到项目根目录下名为“vendor”的文件夹中。

然后在users.php中,您需要自动加载器:

require_once "vendor/autoload.php"

您使用命名空间:

use Lib;
$objServer = new Lib\Server();

它可能会奏效。