我正在为测试目的编写一个简单的逻辑。当一个动作方法被调用时,我将获取作为参数传递给动作的id并将其存储在关联数组中。我写了一个静态函数来处理逻辑。我还有第二个问题,我想检查id是否已经作为关联数组中的键存在,如果是,我想增加计数器。但我可以为这个问题提出另一个问题。这个问题的目的是静态变量不工作。如何处理函数内部的PHP静态类变量
class UsersController extends Controller
static $users= Array();
public function show($id)
{
$this::stats($id);
}
private static function stats($id)
{
if( array_key_exists("{$id}", UsersController::$users))
{
UsersController::$users["{$id}"] += 1;
}
else
{
UsersController::$users["{$id}"] = 1;
}
print_r(UsersController::$users);
}
每次访问不同的用户www.example.com/users/2或www.example.com/users/1。 print_r语句显示数组中只存在一个元素。我是否缺少一些oop原理。我用C#编写了一个类似的代码,它的工作方式和预期的一样。
为什么你是否将所有内容都包含在引号中?不要使用'“{$ id}”',使用'$ id',这样更具可读性。此外,可以使用关键字'static'来代替当前的类名称。这会在以后更容易重构。 – Devon
@Devon:抱歉可能会劫持,但使用'self'还可以吗? – Kisaragi
@Kisaragi,是的,但这取决于。有时候自我更好。它在扩展类时应用不同。例如:Controller中的self将始终引用Controller。 Controller中的静态会引用被调用的类(UsersController),允许扩展功能。 – Devon