我通過本教程: http://www.killerphp.com/tutorials/object-oriented-php/php-objects-page-3.php開始oop php問題:做構造函數代替getter?
起初,他已經創建的類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();
?>
很酷。我明白這一點。謝謝! – Joel 2010-05-15 02:40:57