首页 / PHP / php – 从父类访问子变量?
php – 从父类访问子变量?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 从父类访问子变量?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2186字,纯文字阅读大概需要4分钟。
内容图文
我该怎么做呢?
class test
{
public static function run() {
echo "Number is: ".$num;
}
}
class testchild extends test
{
protected static $num = 5;
public static function exec() {
$num = 5;
parent::run();
}
}
testchild :: EXEC();说未定义的变量“num”.
我如何访问此变量?
解决方法:
你不应该这样做,因为你要求父母访问它可能或不存在的东西.
最简单的方法是在父内部声明$num.否则,您需要采取措施,通过提供(例如)受保护的抽象静态getter来保证系统信息将在那里.
abstract class test
{
public static function run() {
echo "Number is: ".static::getNum();
}
protected abstract static function getNum();
}
class testchild extends test
{
protected static $num;
public static function exec() {
static::$num = 5;
parent::run();
}
protected static function getNum() {
return static::$num;
}
}
class anotherchild extends test
{
public static function exec() {
parent::run();
}
// We always return 42. Or maybe the Unix timestamp, who knows.
protected static function getNum() {
return 42;
}
}
$c = new testchild();
$c->exec();
传递几个变量
另一种不太可靠的方法是拥有一个“通信对象”并传递对它的引用.这可以使用属性数组或(更好)已知结构的对象以与上面相同的方式完成:
abstract class test
{
public static function run() {
echo "Number is: ".static::tell('num');
}
protected abstract static function tell($what);
// A concrete function to initialize the known object would be nice here.
}
class testchild extends test
{
protected static $info; // This is an array, out of laziness.
// It ought to be converted to an object.
public static function exec() {
static::$info['num'] = 5; // Typo here == possibly subtle bug.
parent::run();
}
protected static function tell($what) {
return static::$info[$what]; // array_key_exists would be nice here.
}
}
小改进
为了确保在通信时每个对象都在同一块板上,您可以使用setter抽象通信对象(现在它也可以是一个数组):
public static function exec() {
static::say('num', 5);
parent::run();
}
protected static function say($what, $value) {
// array_key_exists would be nice here too.
static::$info[$what] = $value;
}
然后初始化会将对象的键设置为默认值,并且尝试设置不存在的键可能会引发异常.当然,您需要仔细规划需要在不同子类中设置哪些信息,以及如何;这实际上并不是一个好习惯,因为现在的变化往往会从孩子到父母,然后是兄弟姐妹.
内容总结
以上是互联网集市为您收集整理的php – 从父类访问子变量?全部内容,希望文章能够帮你解决php – 从父类访问子变量?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。