您不能在PHP类中放置两个具有唯一参数签名的__construct函数。我想这样做:
class Student
{
protected $id;
protected $name;
// etc.
public function __construct($id){
$this->id = $id;
// other members are still uninitialized
}
public function __construct($row_from_database){
$this->id = $row_from_database->id;
$this->name = $row_from_database->name;
// etc.
}
}
用PHP做到这一点的最佳方法是什么?
我可能会做这样的事情:
<?php
class Student
{
public function __construct() {
// allocate your stuff
}
public static function withID( $id ) {
$instance = new self();
$instance->loadByID( $id );
return $instance;
}
public static function withRow( array $row ) {
$instance = new self();
$instance->fill( $row );
return $instance;
}
protected function loadByID( $id ) {
// do query
$row = my_awesome_db_access_stuff( $id );
$this->fill( $row );
}
protected function fill( array $row ) {
// fill all properties from array
}
}
?>
然后,如果我想要一个我知道ID的学生:
$student = Student::withID( $id );
或者,如果我有数据库行的数组:
$student = Student::withRow( $row );
从技术上讲,您不是在构建多个构造函数,而只是在构建静态辅助方法,而是通过这种方式避免在构造函数中使用大量意大利面条式代码。
问题内容: 我正在尝试为我的NodeJS项目构建一组实用程序。这些帮助程序包括:文本实用程序(如子字符串,控制台日志记录等),以及更具体的帮助程序,如分析tweet的文本。 因此,我试图将模块划分为不同的文件,并对每件事的含义非常清楚。 例如,我想实现以下目标: 如您所见,我通过调用非常特定的方法和子方法将Utils用于不同的事情。 我试图了解继承在这里的工作原理,但我有点迷失了。 这就是我正在做
问题内容: 有一些类似的话题,但我找不到一个有足够答案的。 我想知道Java中构造函数重载的最佳实践是什么。关于这个问题我已经有了自己的想法,但我想听听更多的建议。 我指的是简单类中的构造函数重载和继承已重载类(意味着基类具有重载构造函数)时的构造函数重载。 问题答案: 虽然没有“官方指导方针”,但我遵循亲干原则。使重载构造函数尽可能简单,最简单的方法是它们只调用this(…)。只需要检查一次参数
本文向大家介绍php构造函数的继承方法,包括了php构造函数的继承方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php构造函数的继承方法。分享给大家供大家参考。具体如下: 第一种情况:子类没有定义构造函数时,默认继承。例子: 输出结果:小强 第二种情况:子类定义了构造函数,则不会被继承。实例: 输出结果:BBBBBB子类 第三种情况:如果需要调用父类的构造函数,则可以使用:paren
问题内容: 如果我有一个像这样的构造函数: 然后,我如何在与构造函数相同的类中的方法中使用变量c和d,因为尝试仅在方法中使用变量名似乎不起作用? 问题答案: 实际上,您的代码将无法编译- 无效。 我认为您的意思是:- 。 然后我如何在与构造函数相同的类中的方法中使用变量c和d 您不能这样做,因为您已将它们声明为局部变量,其范围在构造函数结束执行时终止。 您应该将它们声明为实例变量。
问题内容: 我想永远每60秒重复执行一次Python中的函数(就像中的一样)。该代码将作为守护程序运行,实际上就像使用每分钟调用脚本一样,但是不需要用户设置。 在有关使用Python实现的的问题中,该解决方案似乎实际上只是将停留了x秒。我不需要这种高级功能,所以也许这样的事情会起作用 该代码是否存在任何可预见的问题? 问题答案: 使用模块,该模块实现了通用事件调度程序。
问题内容: 这个问题已经在这里有了答案 : 如何根据参数类型重载__init__方法? (10个答案) 3年前关闭。 我有一个保存数据的容器类。创建容器时,有不同的方法来传递数据。 传递包含数据的文件 通过参数直接传递数据 不要传递数据;只是创建一个空容器 在Java中,我将创建三个构造函数。如果在Python中可行,则如下所示: 在Python中,我看到了三个明显的解决方案,但是没有一个是漂亮的