访问类的属性

时间:2014-11-12 17:18:01

标签: php class

我为一个较大的项目编写一小段内容,该项目将读取CSV文件并将信息存储在一个类中。我将类的每个实例存储在一个数组中。

到目前为止,我尝试做的只是读取CSV的每一行,使用该信息创建一个新的类实例,然后使用我创建的类函数显示信息。

我有两个问题:

首先,在构建构造函数时,我最初尝试使用$this->$property,但是当我这样做时,每个属性都有未定义的变量错误。我拿出$ this,似乎工作正常。我想知道为什么$this没有在那里工作?

现在,我每次尝试访问变量以在我班级的displayInfo()函数中打印出来时,我所遇到的错误是一个未定义的变量错误。我不明白变量是如何定义的,它们是类的属性,它们是使用构造函数初始化的。

这是我的代码:

<?php
class Course {
public $crn;
public $title;
public $instructor;
public $section;
public $location;
public $time;
public $days;

function __construct($arg_crn, $arg_title, $arg_instructor, $arg_section, $arg_location, $arg_time, $arg_days) {
    $crn = $arg_crn;
    $title = $arg_title;
    $instructor = $arg_instructor;
    $section = $arg_section;
    $location = $arg_location;
    $time = $arg_time;
    $days = $arg_days;
}

public function displayInfo() {
    echo ("\n");
    echo $crn;
    echo (", ");
    echo $title;
    echo (", ");
    echo $instructor;
    echo (", ");
    echo $section;
    echo (", ");
    echo $location;
    echo (", ");
    echo $time;
    echo (", ");
    echo $days;
    echo ("<br/>");
}
}
    ?>


    <?php
            $fileName = "testCSV.txt";
            $fp = fopen($fileName, "r");
            $index = 0;
            // get the next line of the CSV: this contains the headers
            $fields = fgetcsv($fp);
            // get the next line of the CSV, which contains the first course information
            // $fields is an array holding each field of the line (where a field is separated by commas)
            $fields = fgetcsv($fp);
            while($fields) {
            // if at the end of the file, fgetcsv returns false and the while loop will not execute
                    // the fields in the file are saved into the following indices in fields:
                    // 0: CRN
                    // 1: Title
                    // 2: Instructor
                    // 3: Section
                    // 4: Location
                    // 5: Time
                    // 6: Days

                    // add a new course to the array of courses using the information from fields
                    $Courses[$index] = new Course($fields[0], $fields[1], $fields[2], $fields[3], $fields[4], $fields[5], $fields[6]);
                    $Courses[$index]->displayInfo();
                    // get the next line and increment index
                    $fields = fgetcsv($fp);
                    $index++;
            }
    ?>

1 个答案:

答案 0 :(得分:1)

正如Mark Ba​​ker提到的那样,实例变量可以使用$this->crn进行访问,请遵循相同的&amp;阅读有关PHP中OOPS的一些教程,因为你对这个问题太过新了。

您尝试使用$this->$property访问媒体资源,$this->property

一些教程:

http://php.net/manual/en/language.oop5.php

http://www.tutorialspoint.com/php/php_object_oriented.htm