假设我有这个代码:
首先我创建了父级
class Country {
public $country;
public $populationcountry;
public $language;
使用一些方法(与此问题无关)
public function function1() { }
public function function2() { }
.
.
} //end of parent class
然后我创建了孩子
Class city extends Country
{
public $populationcity;
}
然后我创建对象(对于这个例子,我只创建了一个)
$city1 = new city();
$city1->populationcity = 10000;
和一组对象
$cities = [$city1];
最后我只想“回显”孩子的属性(人口城市)
foreach ($cities as $city) {
foreach ($city as $k => $v) {
$city->populationcity;
echo $k . ': ' . $v . '<br>';
}
}
输出:
人口城市:10000
国家:
人口国家:
语言:
我想保留父级的方法,而不是父级的属性。我怎样才能做到这一点?
David 在评论中告诉我将属性设置为 Private。我这样做了,并且工作正常,但是当我创建 Country 对象时,它会在子类中打印父类的属性。
这是代码,当父属性为 Public 时,它为我提供此输出。
人口城市:10000
国家:
人口国家:
语言:
国家:英格兰
人口国家:30000
语言:英语
它应该打印:
人口城市:10000
国家:英格兰
人口国家:30000
语言:英语
当我将它们设置为 Private 时,我得到了这个:
致命错误:未捕获错误:无法访问 C:\xampp\htdocs\ejercicios.php:141 中的私有属性 Country::$language 堆栈跟踪:#0 {main} 抛出在 C:\xampp\htdocs\ejercicios.php 中141
当我将它们设置为 Protected 时,我得到了这个:
致命错误:未捕获的错误:无法访问 C:\xampp\htdocs\ejercicios.php:141 中的受保护属性 Country::$language 堆栈跟踪:#0 {main} 抛出在 C:\xampp\htdocs\ejercicios.php 141
温温酱