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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵