Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用类_自动加载PHP存在混乱_Php - Fatal编程技术网

使用类_自动加载PHP存在混乱

使用类_自动加载PHP存在混乱,php,Php,我正在开发一个应用程序,其中我有很多PHP类,我编写的类如下所示 <?php if(!class_exists('AClass1')){ class AClass1{ } } ?> if(class_exists('AClass1')){ // Some Code To RUN } 在上面的代码中,如果类AClass1不存在,那么它将通过class\u exists函数自动加载,这对我很好 但是当我在一个名为aclass1.php的文件中编写这样的代码时 <

我正在开发一个应用程序,其中我有很多PHP类,我编写的类如下所示

<?php

if(!class_exists('AClass1')){
  class AClass1{
  }
}

?>
if(class_exists('AClass1')){
  // Some Code To RUN
}
在上面的代码中,如果类
AClass1
不存在,那么它将通过
class\u exists
函数自动加载,这对我很好

但是当我在一个名为aclass1.php的文件中编写这样的代码时

<?php

if(!class_exists('AClass1')){
  class AClass1{
  }
}

?>

如果该文件是通过上述if条件加载的,那么在加载该文件后,它仍然会循环到autoloader中,而只是应该注册该类

那么,哪种好方法可以避免循环到autoloader中,即使文件位于类源代码中

  • 注册类时切勿使用
    class\u exists
  • 使用
    class\u exists('CLASSNAME',false)
    避免在自动加载器内循环

  • 我编写了一个简单的测试,看看是否存在include循环:

    test.php
    为什么不简单地为文件添加一个唯一的名称空间,而不是放入一堆
    class_exists()
    ?然后,只要名称空间不同,就可以有多少个类具有相同的名称。@MagnusEriksson我已经用名称空间创建了我的项目。但唯一的问题是,这是一个wordpress框架,为什么要检查您将要定义的类是否存在?我的意思是你可以使用类_exists和false作为第二个参数。但这对我来说毫无意义,除非你正在创造某种“聚填充”。但是,如果您试图防止多次包含该文件时出现错误,那么就不要多次包含该文件。这么简单…如果它是wordpress框架,又有什么关系呢?它仍然是PHP。如果在名称空间中有它们,那么
    class\u exists()
    首先有什么意义?你到底想用它们解决什么问题?@slepic对不起,我很困惑,:-(你介意解释一下吗
    php test.php
    
    class exists