来自ActionScript 3的强大背景,需要/导入将在另一个类中引用/使用/扩展的类的过程如下:
import package.inner.ClassName;
Run Code Online (Sandbox Code Playgroud)
这在需要使用的每个外部类文件的顶部都是必需的ClassName,这意味着如果我执行以下任何操作,则需要它,例如:
public class NewClass extends ClassNamevar someVar:ClassName = new ClassName();function someMethod():ClassName{ .. }等等
我对PHP有一些相关的知识,即我知道如何使用它来处理MySQL,输出文本,编写函数,设置一些基本类等.
我总是只有一个小型网站的主要类,我在网页顶部创建一个实例并从那里开始工作,例如:
<?php
class Website
{
public function __construct()
{
// connect to mysql, etc
}
public function example()
{
echo "example text";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
然后:
<?php
require "whatever/class.website.php";
$website = new Website();
?>
<!doctype html>
<html>
<head>
<title>Example</title>
</head>
<body>
<?php
$website->example();
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这很好,但现在我想开始转向一些包含多个类的大型项目.起初我没事,但在尝试为多个类设置基类之后,我遇到了一个问题:
举个例子,我设置了以下基类:
class Base
{
public function test($input)
{
echo $input;
}
}
Run Code Online (Sandbox Code Playgroud)
从那里我设置了一个扩展这个的类:
require "class.base.php";
class ExampleOne extends Base
{
public function __construct()
{
$this->test("example one");
}
}
Run Code Online (Sandbox Code Playgroud)
然后检查是否所有工作都按预期工作,它做了:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
require "class.exampleone.php";
$one = new ExampleOne();
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后我继续创建一个扩展的附加类Base,这是我遇到问题的地方..
require "class.base.php";
class ExampleTwo extends Base
{
public function __construct()
{
$this->test("example two");
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试创建此类的实例,或者甚至只是require用来获取对类的访问时,我收到一个错误:
致命错误:无法在第3行的C:\ xampp\htdocs\testing\class.base.php中重新声明类Base
所以可以肯定的是,这个错误是非常自我解释的,因为我已经require "class.base.php";在每个类的顶部使用- 这是你在ActionScript 3中所做的,因为我正在使用基类(扩展它).
我想我只是觉得很难理解我应该怎么做.凡我应该把我require的Base?在我扩展的后一个类中省略它似乎很奇怪,因为如果我不创建我的第一个类的实例那么基类就不会被包含在内.
任何建议都会很棒!
您可以使用该require_once()声明.它的功能与require语句类似,但会检查以确保尚未包含基类,并在需要时加载它.
http://php.net/manual/en/function.require-once.php
您可能还希望根据网站的大小来研究Web框架,但这不在问题范围内:)