PHP如何看待类 - 仅在包含文件中?

时间:2010-09-30 18:33:44

标签: php class

在PHP中,只有当它们在包含文件中时才会看到它们?在Java中,我可以在另一个文件中看到它们,而不在我当前的文件中包含该文件。在PHP中,查看任何给定类以将其包含在文件中的唯一方法是什么?所以我只是把我的课文件包括在内?

5 个答案:

答案 0 :(得分:8)

  

在PHP中,只有当它们在包含文件中时才会出现?

是。但是,在PHP 5中,有一个新的Autoloading功能允许您在调用类名时构建包含文件的函数。这实际上可以自动初始化类。

手册中的简单示例(我稍微扩展了它)清楚地说明了它是如何工作的:

<?php
function __autoload($class_name) {
    require_once $class_name . '.php';
}

$obj  = new MyClass1();   // Autoloader will load "MyClass1.php" 
$obj2 = new MyClass2();   // Autoloader will load "MyClass2.php" 
?>

高级自动加载器,如Zend Framework的Zend_Loader_Autoloader(和标准PHP库的spl_autoload_register(),欢呼@ircmaxell),甚至可以为不同的前缀添加不同的自动加载规则,允许从不同的前端加载库具有不同命名约定的目录。

答案 1 :(得分:1)

一般来说,是的。但是,请注意包含是级联的 - 在某种意义上说:如果你包含文件a.php,其中包含文件b.php,你现在可以在当前文件中看到文件b.php。

另外,PHP 5提供自动加载类,我建议你看一下:

http://php.net/manual/en/language.oop5.autoload.php

答案 2 :(得分:0)

是 - PHP对使用代码未直接包含在文件中的代码没有任何可见性。

但是,许多开发人员选择使用PHP自动加载功能(http://php.net/manual/en/language.oop5.autoload),而不是包含(或首选方法 - 要求).php文件。 php)在您使用特定类时自动加载所需的文件。

答案 3 :(得分:0)

是的,要使文件中的某个类可用,必须包含该文件。

包含文件可以通过多种方式完成,使用以下功能:

include(filename);
include_once(filename) - which only includes the file if it's not already loaded
require(filename) - equal to include, except that the script will halt if file is not available
requier_once(filename)

文件也可以通过__autoload或spl_autoload_register函数自动加载。有关PHP.net上自动加载课程的详细信息。

答案 4 :(得分:-1)

是的,只有在include语句中才能访问其他php文件中的函数。 PHP是标准的过程语言。它从最高顺序开始工作,所以如果您希望执行类包括查看面向对象的PHP或将文件包含在php页面顶部。