我正在完成本教程: http://www.killerphp.com/tutorials/object-oriented-php/php-objects-page-3.php
首先他让你在类中创建一个 setter 和 getter 方法:
<?php
class person{
var $name;
function set_name($new_name){
$this->name=$new_name;
}
function get_name(){
return $this->name;
}
}
php?>
然后创建对象并回显结果:
<?php
$stefan = new person();
$jimmy = new person();
$stefan ->set_name("Stefan Mischook");
$jimmy ->set_name("Nick Waddles");
echo "The first Object name is: ".$stefan->get_name();
echo "The second Object name is: ".$jimmy->get_name();
?>
按预期工作,我明白了。
然后他介绍了构造器:
class person{
var $name;
function __construct($persons_name) {
$this->name = $persons_name;
}
function set_name($new_name){
$this->name=$new_name;
}
function get_name(){
return $this->name;
}
}
然后像这样返回:
<?php
$joel = new person("Joel");
echo "The third Object name is: ".$joel->get_name();
?>
这一切都很好并且很有意义。
然后我尝试将两者结合起来并得到一个错误,所以我很好奇——构造函数总是代替“get”函数吗?如果你有一个构造函数,你是否总是需要在创建对象时包含一个参数?
给出错误:
<?php
$stefan = new person();
$jimmy = new person();
$joel = new person("Joel Laviolette");
$stefan ->set_name("Stefan Mischook");
$jimmy ->set_name("Nick Waddles");
echo "The first Object name is: ".$stefan->get_name();
echo "The second Object name is: ".$jimmy->get_name();
echo "The third Object name is: ".$joel->get_name();
?>
最佳答案
它给你错误,因为构造函数有必需的参数。要使参数可选,请像这样给它一个默认值
function __construct($persons_name=null) {
if ($persons_name) {
$this->set_name($persons_name);//use the setter in the constructor.
}
}
现在可以了
$stefan = new person();
$stefan ->set_name("Stefan Mischook");
$joel = new person("Joel Laviolette");
echo "The first Object name is: ".$stefan->get_name();
echo "The second Object name is: ".$joel->get_name();
关于php - 开始 oop php 问题 : do constructors take the place of getter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838667/