die*_*sel 8 php extends class require
这就是我在foo.php中所拥有的
class Foo
{
public $foo = NULL;
public $foo2 = NULL;
public function setFoo ($foo, $foo2)
{
$this->foo = $foo;
$this->foo2 = $foo2'
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我在foo3.php中所拥有的
class Foo3 extends Foo
{
public $foo3 = NULL;
public function setFoo3 ($foo3)
{
$this->foo = $foo3;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在第三个文件run.php中需要的方法:
require_once "foo.php";
require_once "foo3.php";
$foo = new Foo();
$foo->setFoo3("hello");
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
致命错误:调用未定义的方法Foo :: setFoo3()
我不确定问题是我是如何要求他们的.谢谢.
Mik*_*ell 10
在您的示例中,您正在实例化Foo,这是父级,并且不知道该方法setFoo3().试试这个:
class Foo3 extends Foo
{
...
}
require_once "foo.php";
require_once "foo3.php";
$foo = new Foo3();
$foo->setFoo3("hello");
Run Code Online (Sandbox Code Playgroud)
首先,在你的foo.php中不应该标记你的字段public,因为你在setFoo($foo1, $foo2)方法中设置了这些值.相反,你可能有类似的东西:
<?php
class Foo
{
private $foo1;
private $foo2;
public function setFoo($foo1, $foo2) {
$this->foo1 = $foo1;
$this->foo2 = $foo2;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你应该extends在声明类时添加关键字Foo3,另外还需要在文件开头包含扩展类文件.在您的情况下,您的foo3.php文件中可能包含以下内容:
<?php
require_once "foo.php";
class Foo3 extends Foo
{
public function setFoo3($foo3) {
$this->setFoo($foo3, "some foo3 specific value"); // calling superclass method
}
}
Run Code Online (Sandbox Code Playgroud)
那么你可以Foo3在run.php中创建一个类的实例化,如下所示:
<?php
require_once "foo3.php";
$foo3 = new Foo3();
$foo3->setFoo3("bar");
Run Code Online (Sandbox Code Playgroud)
和我的建议,你应该阅读一些关于OOP技术;)
| 归档时间: |
|
| 查看次数: |
23941 次 |
| 最近记录: |