PHP -> создал класс, но присвоить значения свойств не удалось - PullRequest
0 голосов
/ 01 декабря 2011

Я создаю класс и пытаюсь его использовать.Однако установленные мной значения не сохраняются.Пожалуйста, сообщите!

Вот мое определение класса:

<?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);
}
?>

Ответы [ 3 ]

1 голос
/ 01 декабря 2011

У вас есть два case 0 заявления.Я не очень часто использую операторы switch, но я уверен, что это не тот способ, которым должны использоваться операторы switch.

Я бы переписал ваш переключатель так, чтобы он выглядел примерно так:

switch ($c) {
    case 0:
        $listMember->mdFname=$data[$c];
        break;
    default:
        echo "c==$c<br>";
}

В противном случае ваши значения не присваиваются, потому что вы ничего не передаете в параметры конструктора.Вам нужно будет присвоить значения при создании объекта:

$listMember = new MemberData($arg1, $arg2, ...);.

В настоящее время необходимо установить только одно свойство mdFname, и только когда $c равно0.Однако с 2 case 0: утверждениями я не уверен, что интерпретатор делает здесь, и вполне может не присвоить свойству какое-либо значение.

Следует читать о классах и объектах с PHP 5 .

0 голосов
/ 01 декабря 2011

да, конечно, как вы и просили ---

public function get_mdNotes(){return $this->mdNotes;} set_mdNotes($notes){$this->mdNotes = $notes;} 
0 голосов
/ 01 декабря 2011

Ну, я не знаю, почему это не работает, но вы делаете некоторые вещи действительно странно.

Я бы предложил использовать массив, а не управлять всеми свойствами:

class MemberData {

    public $properties; //I'd recommend private or protected.

    function MemberData(array $data) {
        $this->properties['mdId'] = isset($data['mdId']) ? $data['mdId'] : null;
        $this->properties['mdFname'] = isset($data['mdFname']) ? $data['mdFname'] : null;
        $this->properties['mdLname'] = isset($data['mdLname']) ? $data['mdLname'] : null;
        $this->properties['mdEmail'] = isset($data['mdEmail']) ? $data['mdEmail'] : null;
        $this->properties['mdTwitter'] = isset($data['mdTwitter']) ? $data['mdTwitter'] : null;
        $this->properties['mdFacebook'] = isset($data['mdFacebook']) ? $data['mdFacebook'] : null;
        $this->properties['mdMyspace'] = isset($data['mdMyspace']) ? $data['mmdMyspacedId'] : null;
        $this->properties['mdPhoneNumber'] = isset($data['mdPhoneNumber']) ? $data['mdPhoneNumber'] : null;
        $this->properties['mdNotes'] = isset($data['mdNotes']) ? $data['mdNotes'] : null;
    }

}
...