代码之家  ›  专栏  ›  技术社区  ›  johnny

php如何看待类——只在include文件中?

  •  2
  • johnny  · 技术社区  · 14 年前

    在PHP中,类只有在包含文件中才能看到吗?在Java中,我可以在另一个文件中看到它们,而不包含当前文件中的那个文件。在PHP中,查看任何给定类以将其包含在文件中的唯一方法是什么?所以我只是把我的班级档案放在任何地方?

    5 回复  |  直到 14 年前
        1
  •  8
  •   Pekka    14 年前

    在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框架等高级自动加载程序 Zend_Loader_Autoloader (以及标准PHP库的 spl_autoload_register() ,cheers@ircmaxell)甚至可以为不同的前缀添加不同的自动加载规则,允许从具有不同命名约定的不同目录加载库。

        2
  •  1
  •   bimbom22    14 年前

    一般来说,是的。但是,请注意,include是级联的——从这个意义上说:如果包含文件a.php(其中包含文件b.php),那么您现在可以在当前文件中看到文件b.php。

    另外,php 5还提供了自动加载类,我建议您看看:

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

        3
  •  0
  •   EricBoersma    14 年前

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

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

        4
  •  0
  •   alexn    14 年前

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

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

    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)
    

    文件也可以通过uu autoload或spl_autoload_寄存器功能自动加载。有关自动加载类的详细信息 PHP.net .

        5
  •  -1
  •   jumpcutking    14 年前

    是的,只有在include语句中,您才能访问其他PHP文件中的函数。按照标准,PHP是一种过程语言。它从上到下工作,因此如果您希望执行类如includes,请查看面向对象的PHP或包含PHP页面顶部的文件。