我想创建一个类。每次调用它时,它会将$number
的值增加1.当它达到7时,它应该返回一条消息"达到最大限制"。在哪里定义$number
以及如何在其中存储新值。
class addClass
{
public $number = 0;
public static function addOne($number)
{
$number = $number++;
if ($number == 7) {
return 'This is 7';
}
}
}`
答案 0 :(得分:2)
我认为根据您的描述,您正在寻找这个:
class MyNumber {
private static $number = 0;
public static function addOne() {
self::$number++;
if (self::$number === 7) {
return 'Maximum limit reached';
}
return self::$number;
}
}
$result = MyNumber::addOne();
$result = MyNumber::addOne();
$result = MyNumber::addOne();
$result = MyNumber::addOne();
$result = MyNumber::addOne();
$result = MyNumber::addOne();
$result = MyNumber::addOne();
第一个结果是1
第二个结果是2
第三个结果是3
第四个结果是4
第五个结果是5
第六个结果是6
第七个结果是Maximum limit reached
答案 1 :(得分:1)
$number
函数
addOne
有两种选择
如果您不想将$number
保持为静态,则可以将addOne
更改为非静态方法并使用$this->
进行访问
class addClass
{
public $number = 0;
public function addOne()
{
$this->number = $this->number + 1;
if ($this->number == 7) {
return 'This is 7';
}
}
}
或者如果您希望addOne
是静态的,那么您可以将$number
声明为静态并使用self::
class addClass
{
private static $number = 0;
public static function addOne()
{
self::number = self::number + 1;
if (self::number == 7) {
return 'This is 7';
}
}
}
答案 2 :(得分:0)
请记住:
1)addOne()方法中的$ number参数优先于addClass()参数中的$ number成员。
2)句子$ number = $ number ++完全没有影响变量$ number,因为它首先被分配。
3)addOne()方法不需要是静态的,除非打算在没有类addClass的实例的情况下使用。
4)静态变量只需初始化一次,有关static关键字的更多信息,请参阅php手册:http://php.net/manual/en/language.oop5.static.php
5)你不能在静态方法中引用成员变量(例如使用$ this),因为静态方法具有“类范围”,并且它们意味着在没有任何此类实例的情况下使用。另一方面,非静态方法需要类的实例,并且可以使用$ this引用类的成员。
6)以下是如何执行此操作的示例:
<?php
class addClass{
public function addOne($number) {
static $limit = 0;
if (!isset($limit)) {
$limit = $number;
}
if ($limit+1 == 7) {
return "Maximum limit reached";
} else {
$limit = $number+1;
}
}
}
$a = new addClass();
for($i = 0; $i< 7; $i++) {
echo $i+1, " => ", $a-> addOne($i), PHP_EOL;
}