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条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集