MyClass的(123); ?>
这有效,但返回此警告:
Warning: Missing argument 1 for myClass::myClass()
Run Code Online (Sandbox Code Playgroud)
我读到了这个,似乎构造函数期望一个值,所以通过添加:
function myClass($input='')
Run Code Online (Sandbox Code Playgroud)
警告被删除,但这似乎是不必要的?
有人可以告诉我为什么需要定义一个值来防止这种警告?
谢谢你的任何指示
您正在使用与该类同名的方法(对象中的函数称为方法).这被称为构造函数,它在OOP中具有特殊含义.
永远不会单独调用构造函数,而是在初始化对象时自动调用的方法.方法具有的任何参数,您附加到new classname语句.
$test = new myClass(123);
Run Code Online (Sandbox Code Playgroud)
此外,构造函数必须永远不会返回值.它仅用于在初始化类时执行操作,例如存储参数.任何返回值将会丢失,作为结果的new myClass是总是初始化对象.
如果您只是想在类中创建一个方法来返回一些文本,那么您需要更改方法的名称.这可行:
<?php
class myClass {
var $input;
var $output;
function someOtherFunctionName($input) {
$output = 'You entered: ' . $input;
return $output;
}
}
$test = new myClass;
echo $test->someOtherFunctionName(123);
?>
Run Code Online (Sandbox Code Playgroud)
如果构造函数确实是您想要使用的,那么请注意,从PHP 5开始,标准做法是使用__construct()而不是创建与类同名的方法:
<?php
class myClass {
var $input;
var $output;
function __construct($input) {
$this->input = $input; // This is a valid thing to do in a constructor
}
}
Run Code Online (Sandbox Code Playgroud)
有关PHP 5中的构造函数和析构函数的更多信息,请参见手册.
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |