在PHP中,只有在包含文件中才能看到的类?在Java中,我可以在另一个文件中看到它们,而不在当前文件中包含该文件。在PHP中,看到任何给定的类将其包含在文件中的唯一方法是?所以我只是把我的课堂文件包括在内?PHP如何看待类 - 仅在包含文件中?
回答
在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)使它甚至可以为不同的前缀添加不同的自动加载规则,允许使用不同的命名约定从不同的目录加载库。
SPL的自动加载函数['spl_autoload_register'](http://us.php.net/manual/en/function.spl-autoload-register.php)...您可以定义任意数量的自动加载函数。 PHP将继续尝试列表中的下一个,直到它找到该类,或者以类未找到的错误结束。这是你不应该在自动加载功能中出错的原因之一(让任何已注册的人都有机会)。哦,没有理由对'class_exists'进行检查(除非是为了防止为已经定义的类手动调用它)... – ircmaxell 2010-09-30 19:00:00
@ircmaxell好点。你当然是对的,我没有想过。代码固定。 – 2010-09-30 19:03:05
如果您害怕手动呼叫,请将其设为班级,并将'load'方法设为私人。这样你就需要在类中调用'spl_autoload_register',并且不能在外面手动调用它(因为它是私有的,所以你只需要担心就不会自己调用它);否则+1就可以获得更好的信息。 .. – ircmaxell 2010-09-30 19:05:27
是的只有在包含语句中才能访问其他php文件中的函数。 PHP是标准的程序语言。它从最上面的命令开始工作,所以如果你希望执行像包含面向对象的PHP一样的类,或者将文件包含在php页面的顶部。
一般来说,是的。但是,请注意包含级联 - 意思是:如果您包含包含文件b.php的文件a.php,现在可以在当前文件中看到文件b.php。
此外,PHP 5提供自动加载对象,我建议你看看:
是 - PHP没有任何可视化代码并没有在文件中直接包含使用代码。但是,许多开发人员选择使用PHP自动加载功能(http://php.net/manual/en/language.oop5.autoload),而不是包含(或首选方法 - 需要).php文件,因此许多开发人员都选择使用PHP自动加载功能(http://php.net/manual/zh-cn/language.oop5.autoload) .php)在您使用特定类时自动加载所需的文件。
是的,要使文件中的类可用,必须包含该文件。
包括可以通过多种方式来实现一个文件,或者使用以下功能:
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自动加载类的信息。
- 1. 仅包含一个PHP类文件
- 2. 如何在Bootstrap中包含文件* .php?
- 3. PHP类和包含文件
- 4. 如何看待我的文件名在java中包含的字符串?
- 5. 如何通过仅包含PEAR.php文件来包含PEAR包?
- 6. 如何在yii2中包含新的php文件/类?
- 7. 如何仅包含来自php文件的函数?
- 8. PHP仅包含外部类一次
- 9. 如何在php会话文件中包含jQuery文件?
- 10. 在Visual Studio中搜索时仅包含某些文件类型
- 11. 包含控制器在php代码中的查看文件
- 12. 如何在不包含php文件的情况下调用类?
- 13. 如何在dll中包含待导出类中的struct?
- 14. 包含PHP中的文件
- 15. PHP:包含文件
- 16. 如何查看哪些文件包含在webpack构建中
- 17. 如何在PHP文件中包含PHP网址?
- 18. 如何检查文件夹是否仅包含使用php的文件
- 19. 如何仅在未包含Javascript和css文件的情况下包含它们?
- 20. 如何使用HTTPS包含文件 - PHP
- 21. 如何使用jquery包含php文件?
- 22. 在ridl中包含文件
- 23. 如何将Wordpress文章包含在自定义PHP文件中?
- 24. 如何在Lambda中仅包含aws-sdk中的一个类
- 25. 如何从webroot包含php文件中的ctp文件中的php文件?
- 26. 包含包含另一个php文件的php文件?
- 27. 您如何看待DynamicViewModel类?
- 28. php主文件没有看到包含文件变量
- 29. 仅在某些屏幕分辨率下包含php文件
- 30. 如何在Doxygen中创建一个仅包含“公共”API文件的文件
PHP 5中的自动加载功能是很好的解决方案。 – JustinKaz 2010-09-30 18:38:55