Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php在不首先定义字段的情况下动态添加字段_Php_Class_Field_Member - Fatal编程技术网

php在不首先定义字段的情况下动态添加字段

php在不首先定义字段的情况下动态添加字段,php,class,field,member,Php,Class,Field,Member,所以在php中,您不必像java一样首先在类中定义字段,对吗 在java中,你不能说 public class javac { int x; int y; public javaC() { this.z = 3; } } 但是在php中你能这么说吗 class phpC { $x; $y; public phpC() { $this->z = "omg"; } } php在这方面的文档是什么?这种行为的正确术语是什么?我不认为

所以在php中,您不必像java一样首先在类中定义字段,对吗

在java中,你不能说

public class javac {
    int x;
    int y;
    public javaC() {
     this.z = 3;
    }
 }
但是在php中你能这么说吗

class phpC {
$x;
$y;

public phpC() {
   $this->z = "omg"; 
 }
  }

php在这方面的文档是什么?这种行为的正确术语是什么?我不认为它叫做动态添加字段。。可以在PHP中为未初始化的属性赋值。Java是严格的,PHP是松散的(goosey:)

其技术名称为“重载”。以下是文档:

+1我想补充一点,不要求您初始化属性并不意味着这不是一个好主意。我完全同意,除非您正在设置接口类。“接口类”。。。你的措辞有点混乱。。。实际接口不能包含成员变量,如果您尝试,将生成E_致命错误。抱歉打扰你了。。。答案很好:)哦,糟糕。。你是善良的,因为“接口类”是完全错误的。我指的是一个要重载的类,比如有目的地重载MySQL列名的属性,在这个类中,您事先不知道使用_set()函数的列名是什么。有一个技术名称吗?至于
\uu set()
案例,我相信正确的术语仍然是重载。一般来说,我会把你们所说的“接口类”称为抽象类。声明为抽象的类本身不能实例化,但可以为其子类提供具体的属性和方法(可以选择性地重写或扩展,只要它们不声明为
private
)。您可以在抽象类中定义
\u set
,然后它将以相同的方式在任何子类中访问各种未知属性名称。