dsilhx5830 2015-02-11 12:48
浏览 69
已采纳

在类方法中使用PHP中的命名空间类

I'm new to php and trying to use namespaces for the first time and I have this crazy problem in a big php file (simplified below):

B.php:

namespace Logic;

class C {}
class B {}

A.php:

use Logic\C;

class A extends \BaseClass {
    public function __construct() {}
    // [...500 lines of code...]
    private function hi() { $c = new C(); }
}

The hi method gives the error: Class 'Logic\\C' not found in A.php


But if I just reference B in the constructor of A, it works as expected:

class A extends \Base {
    public function __construct() { $dummy = new C(); }
    // [...500 lines of code...]
    private function hi() { $c = new C(); }
}

When the hi method in the modified code above is run, there are no problems.

Can anybody think of a reasonable explanation for why this happens? Am I misusing namespaces in php?

  • 写回答

1条回答 默认 最新

  • douweida2669 2015-02-11 12:51
    关注

    You need to understand, that the use statement doesn't automatically include the source code file where Logic\C is defined. You need to use an autoloader, or manually require_once that file before accessing classes from that file.


    I suggest to follow the manual about namespaces (and the examples there): http://php.net/manual/en/language.namespaces.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应