似乎无法正确使用PHP命名空间

时间:2014-04-18 13:43:09

标签: php namespaces

我正按照官方PHP documentation

中的热门评论的建议设置我的自动加载器

我的测试环境如下。

C:\ www \ autoload.php (按照热门评论中的建议设置)

<?php 

spl_autoload_extensions(".php");
spl_autoload_register();

C:\ WWW \汽车\ Bmw.php

<?php
namespace Car\Bmw;

class Bmw { var $v = 'Hello I am Class : Bmw'; } 

C:\ WWW \自行车\ Suzuki.php

<?php
namespace Bike\Suzuki;

class Suzuki { var $v = 'Hello I am Class : Suzuki'; } 

C:\ WWW \的index.php

<?php
use Car\Bmw;

include 'autoload.php';

$Obj = new Bmw();
var_dump($Obj);

我尝试了一些变体,例如

  • 使用set_include_path('C:\ www \');
  • autoloader 中定义包含路径
  • 从命名空间/使用中删除Bmw / Suzuki字符串或在一个而不是另一个中应用

在这些试验中,我遇到了很多错误,例如

Fatal error: Namespace declaration statement has to be the very first statement in the script in C:\www\Car\Bmw.php on line 3

Fatal error: spl_autoload(): Class Car\Bmw could not be loaded in C:\www\index.php on line 8

如果您想知道我为什么要使用此设置,请访问我之前提供的链接并阅读热门评论:Linked again here

提前致谢。

1 个答案:

答案 0 :(得分:1)

您正在创建这两个类:

  • Car\Bmw\Bmw
  • Bike\Suzuki\Suzuki

您需要将命名空间声明修改为CarBike,如下所示:

<?php

namespace Car;

class Bmw { /* */ }