gpt4 book ai didi

php - 为什么我的基本 php 类在实例化时需要一个参数?

转载 作者:可可西里 更新时间:2023-11-01 00:27:40 26 4
gpt4 key购买 nike

我的类(class)(123); ?>

这有效,但会返回此警告:

Warning: Missing argument 1 for myClass::myClass()

我读到这个,似乎构造函数需要一个值,所以通过添加:

function myClass($input='')

警告已删除,但这似乎没有必要?

有人能告诉我为什么需要定义一个值来防止该警告吗?

感谢指点

最佳答案

您正在使用与类同名的方法(对象中的函数称为方法)。那就是所谓的构造函数,它在OOP中有特殊的含义。

构造函数从不单独调用,而是在初始化对象时自动调用的方法。该方法具有的任何参数,您都可以附加到 new classname 语句中。

$test = new myClass(123);

此外,构造函数绝不能返回值。它仅用于在初始化类时做一些事情,例如存储参数。任何返回值都将丢失,因为 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);

?>

如果构造函数确实是您想要使用的,请注意自 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
}
}

更多关于 PHP 5 中的构造函数和析构函数的信息,请参阅 manual .

关于php - 为什么我的基本 php 类在实例化时需要一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2477640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com