我有一个代码:
<?php
abstract class Model
{
static protected $_table;
static public function setTable()
{
self::$_table = get_called_class();
}
static public function getTable()
{
if(!isset(self::$_table)) {
self::setTable();
}
return self::$_table;
}
}
class User extends Model {}
class Post extends Model {}
echo User::getTable();
echo "<br>";
echo Post::getTable();
?>
回显它的输出是:&#34;用户用户&#34;。我无法理解为什么属性的价值会归于另一个人的价值。为什么没有第二个回声给出了帖子&#39;输出?我错了什么?
答案 0 :(得分:0)
因为您正在使用静态属性,所以在第一次设置Model::$_table
后,您的类不会再次设置它。除非您更改Model::getTable()
功能,否则每次都会调用self::setTable()
。
您还可以创建Model
作为特征而不是传统类。
例如:
trait class Model
{
static protected $_table;
static public function setTable()
{
self::$_table = get_called_class();
}
static public function getTable()
{
if(!isset(self::$_table)) {
self::setTable();
}
return self::$_table;
}
}
class User {
use Model;
}
class Post {
use Model;
}
echo User::getTable();
echo "<br>";
echo Post::getTable();