dozabt4329 2017-06-11 17:54
浏览 81
已采纳

可以在php类中创建构造函数吗?

im work with php and mysql, sometimes i need instantiate my php class in data access layer for return objects, load list etc... but sometimes I use the class constructor and others do not.

Can i create doble constructor in a class?

example:

class Student {

private $id;
private $name;
private $course;

function __construct() {

}

//get set id and name

function setCourse($course) {
    $this->course = $course;
}


function getCourse() {
    $this->course = $course;
}

}

class Course {

private $id;
private $description;

function __construct($id) {
   this->id = $id;
}

//get set, id, description

}

In my access layer sometime I use the constructor in different ways for example:

        $result = $stmt->fetchAll();
        $listStudent = new ArrayObject();

        if($result != null) {

            foreach($result as $row) {

                $student = new Student();

                $student->setId($row['id']);
                $student->setName($row['name']);
                $student->setCourse(new Course($row['idcourse'])); //this works

                $listStudent ->append($sol);
            }
            }

But sometimes I need to use the constructor in another way, for example

$result = $stmt->fetchAll();
        $listCourses = new ArrayObject();

        if($result != null) {

            foreach($result as $row) {

                $course = new Course();  //but here not work, becouse Class course receives a id

                $course->setId($row['idcourse']);
                $course->setDescription($row['description']);

                $listCourses->append($sol);
            }
        }

My english is very bad, i hope you understand me

  • 写回答

2条回答 默认 最新

  • doushi7819 2017-06-11 18:03
    关注

    Use default arguments:

    class Course {
    
      private $id;
      private $description;
    
      function __construct($id = 0) {
        this->id = $id;
      }
    
      // getters and setters for id and description
    
    }
    

    Now, you can use it like that:

    $course = new Course(12); // works with argument
    

    or:

    $course = new Course(); // works without argument
    $course->setId(12);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?