我有3个文件。
我的问题是......如何连接所有3.在我的索引页面上,我是否必须
include 'classes/vehicleClass.php';
我是否需要为摩托车类提供包含或延伸(继承)是否涵盖此内容?
答案 0 :(得分:1)
简短回答:扩展(或以其他方式使用)另一个类的类必须已经在子类的定义之前定义了父类。您的假设是正确的,在定义VehicleClass
课程之前,您的require
必须包含在内(或更好,MotorBike
d)。
但是,大多数框架都不会在所有类定义之前进行并包含每个依赖性。在任何具有任何复杂性的系统上,这将变得难以处理。相反,PHP的开发人员为autoloading类提供了方法。使用spl_autoload_register
将允许您编写一个函数,该函数将在引用时尝试加载给定类的源文件,但尚未找到它的定义。
此外,一旦您将系统变得复杂,您就不希望将所有文件存储在一个位置。大多数框架利用文件系统和namespaces来帮助更好地组织所有类。因此,开发了PSR-0标准,以帮助促进框架之间的自动加载。请查看this question以了解符合PSR-0标准的自动加载器的示例。
PSR-0兼容类的示例:
<?php namespace Vendor\Package;
class ClassName { }
此文件位于/Vendor/Package/ClassName.php
答案 1 :(得分:1)
您可以通过注册自己的自动加载功能让php自动加载您的文件。例如,如果您在目录DOCROOT . 'classes'
(DOCROOT是您的文档根目录)中拥有所有类文件,则可以使用这样的函数(示例):
function class_loader($class) {
include DOCROOT . 'classes/' . $class . '.class.php';
}
spl_autoload_register('class_loader');
现在,如果您尝试创建类'foo'的对象,它将在创建对象之前尝试包含文件DOCROOT . '/classes/foo.class.php'
。您可能希望稍微扩展该功能,例如。小写文件名(include DOCROOT . 'classes/'. strtolower($class) .'.class.php';
)。这样您就可以将类Foo放在foo.class.php中。
答案 2 :(得分:0)
您需要做的是在index.php中包含2个文件。
例如,您的index.php页面可能是这样的。
<?php
require 'classes/vehicleClass.php';
require 'classes/motorbikeClass.php';
// Assuming your class name is MotorBike
$motorBike = new MotorBike();
// And just call the method you want, for example If you have a method called bikeName
echo $motorBike->bikeName();
?>
我希望你现在明白了。
P / S:我更喜欢要求超过包括。 :) Include()也可以正常工作。