我正在与PHP类继承和范围问题作斗争。 基本上,我有一个带有许多有用方法(创建,保存,加载)的基类,开发人员当前将table_name传递给。 我想创建一堆模型类,它们是空的,但可以扩展并继承基类,并且可以具有被调用的相同名称的方法,而不是基类的版本。

下面的代码难以从模型类的静态方法中获取table_name,有什么建议吗?

class Model_Baseclass {
    private $table_name;
    public static function create($fields) {
        $table_name = //self::table_name - parent::table_name - const $table_name
        if ($table_name == NULL) {
            throw new exception('You must specify a table.');
        }
    }
}

class Model_Content_Gallery extends Model_Baseclass {
    public $table_name = 'Content_Gallery';
}

$old = Model_Baseclass::create(array('table_name' => 'Content_Gallery'));
$new = Model_Content_Gallery::create(array());

===============>>#1 票数:1

看一些PHP OOP教程。

没有一种制造方法。 接下来是一个。 例如,在Java中通常为每个属性创建一个get / set方法。 这样,您可以从任何子类访问它,而无需使用protected关键字,也不会使其变得清晰。

  • 在父类上创建一个getTableName()方法。
  • 在子类的实例上,可以调用$ this-> getTableName()方法,因为它是从基类继承的。

如果您在父类上具有MyMethod()并想在子类中以其他方式实现它,则只需在子类中创建MyMethod()并使用getTableName()即可获取表名属性。

如果您使用subclass.MyMethod()实现需要调用parent.MyMethod(),则使用parent :: MyMehtod()(http://www.php.net/manual/zh/keyword.parent.php)

===============>>#2 票数:0

您需要将您的create方法设为非静态,或者将table_name变量设为静态。

如果需要静态某些方法,则从php 5.3开始,您可以在静态继承的上下文中使用后期静态绑定来引用被调用的类。

  ask by azz0r translate from so

未解决问题?本站智能推荐:

2回复

访问自类常量

如何在该类内部定义的函数中访问类常量? 我并不是要访问每个常量,而是要以数组形式访问所有常量。 我看到了类似的东西: 但是,如果我想访问该类内部的所有常量列表怎么办?
2回复

如何从子类访问父级属性? PHP

我从子类访问顶级变量时遇到问题。 这是一个例子 Application.php: configuration.php文件: database.php中: 我很清楚,此处使用父类是错误的,因为子类不会扩展父类,但是如何访问它呢? 谢谢。
3回复

如何从子类访问父变量

我有两个类,一个父类,另一个扩展,我需要在扩展类中使用主变量。 例如 谢谢
1回复

类中的访问常量[重复]

这个问题已经在这里有了答案: 解析错误:语法错误,意外的“。”,期望为“,”或“;” [已关闭] 2个答案 我尝试访问一个类中的常量: file1.php file2.php 我使用了一些变体,例如: 但是总会出现类似以下错误:
3回复

从子类php和父关键字访问父变量?

我有一个父类和一个子类,父类有一个设置一个var的构造函数,我想在子类中使用该var ,我有它工作,但我对关键字parent感到困惑? 例 这工作,我得到myVar的值,但我应该使用关键字parent ,当我这样做时,我得到一个错误,例如,
3回复

实例化类并从不同的类访问方法

我正在尝试在Class_A的功能之一中使用Class_B的功能。 但是很多Class_B的函数都包含$this ,这会引起问题。 这两个都是类(每个类当然都在其自己的文件中): 当我运行Class_A文件时,我Call to undefined method Class_A::per
1回复

在扩展类中访问$ this

我一直在关注有关OOP编程的教程。 我得到了一个名为User的类: 每个用户在数据库中都有不同的快速链接。 我试图像这样用Link类扩展User类: 但是我收到一条错误消息: 致命错误:第153行的...不在对象上下文中时,使用$ this 我以为扩展课程时可以访问所有
2回复

PHP多个子类,访问子类之间的类

我不确定这是否是一个理解问题或语法。 我正在尝试从同一父项下的其他子类访问子类。 我不明白为什么这不起作用。 不是很好的结构,但是它是一个单一对象的应用程序。
5回复

如何从父类函数访问子类中定义的常量?

我从php.net看到了这个例子: 但是$ c :: MY_CONST仅在版本5.3.0或更高版本中可以识别。 我正在写的课可能很多。 基本上,我在ChildClass中定义了一个常量,而MyClass(父亲类)中的一个函数需要使用该常量。 任何的想法?
6回复

子类继承父常量,如果是,我如何访问它们?

问题说的都是真的。 我在父类中定义了常量。 我试过$this->CONSTANT_1但它没有用。