【发布时间】:2011-12-01 00:08:39
【问题描述】:
我正在创建一个类并尝试使用它。但是,我设置的值没有被保留。请指教!
这是我的类定义:
<?php
class MemberData
{
var $mdId;
var $mdFname;
var $mdLname;
var $mdEmail;
var $mdTwitter;
var $mdFacebook;
var $mdMyspace;
var $mdPhoneNumber;
var $mdNotes;
function MemberData($mdId, $mdFname, $mdLname, $mdEmail, $mdTwitter, $mdFacebook, $mdMyspace, $mdPhoneNumber, $mdNotes)
{
$this->mdId = $mdId;
$this->mdFname = $mdFname;
$this->mdLname = $mdLname;
$this->mdEmail = $mdEmail;
$this->mdTwitter = $mdTwitter;
$this->mdFacebook = $mdFacebook;
$this->mdMyspace = $mdMyspace;
$this->mdPhoneNumber = $mdPhoneNumber;
$this->mdNotes = $mdNotes;
}//end function
}//end MemberData class
?>
这里是我实例化类并尝试设置和打印其中一个属性值的地方:
<?php
include("./classes/MemberData.php");
$listMember = new MemberData();
echo "herexy";
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
switch($c){
case 0: $listMember->mdFname=$data[$c];break;
//case 0: $listMember->mdFname["blue"];break;
case 0: break;
//case 1: $listMember->mdLname($data[$c]);break;
case 2: echo "c==$c<br>";break;
case 3: echo "c==$c<br>";break;
case 4: echo "c==$c<br>";break;
case 5: echo "c==$c<br>";break;
}//end switch
}
print "listmember->mdFname == $listmember->mdFname";
}//end while
fclose($handle);
}
?>
【问题讨论】:
-
我会在类中使用 getter 和 setter 来访问类变量。
-
为什么不直接使用数组和从列号到键的映射?会容易得多。如果您愿意,您可以稍后将数组转换为对象。
-
为什么会有两个
case 0:语句? -
并添加一个
default引发异常的案例,以便您知道什么时候错过了。 -
此外,每次您从 csv 文件中成功读取时,您都会修改
mdFName成员。
标签: php class properties instantiation