dongshi9526 2013-04-17 14:25
浏览 52
已采纳

命名空间 - __autoload()需要一个错误的类

I am builded a new object in my file without namespaces:

new My\Validator();

Above, in the same file I have got __autoload():

function __autoload($className) 
{
    var_dump($className);
}

The __autoload() function prints

'My\My\Validator'.  

Where is the double 'My' come from?

  • 写回答

1条回答 默认 最新

  • douyunhuan9886 2013-04-17 15:07
    关注

    It is adding the My namespace because you are probably inside the My namespace already when you create the object with new My\Validator().

    namespace My;
    $obj = new My\Validator();
    

    will be translated to:

    $obj = new My\My\Validator();
    

    Since you are inside the My namespace already you can:

    • either just call new Validator()
    • or call new \My\Validator()

    The beginning \ will tell PHP to look into the global namespace.


    On a side note, it is considere good practice to use spl_autoload_register instead of __autoload, because you can set multiple autoloader callbacks.

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

报告相同问题?

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程