Php 使用setter和getter更改类的静态属性值
我想扩展我下载的这个类以满足我自己的需要。当我运行call这个类时,我得到一个错误,抱怨构造函数中有一个意外的=Php 使用setter和getter更改类的静态属性值,php,Php,我想扩展我下载的这个类以满足我自己的需要。当我运行call这个类时,我得到一个错误,抱怨构造函数中有一个意外的= define("HIT_OLD_AFTER_SECONDS", 4 * 7 * 24 * 3600); class PHPCount extends DatabaseObject { protected static $table_name = "hits"; protected static $db_fields = array('pageid','isuniqu
define("HIT_OLD_AFTER_SECONDS", 4 * 7 * 24 * 3600);
class PHPCount extends DatabaseObject {
protected static $table_name = "hits";
protected static $db_fields = array('pageid','isunique', 'hitcount','english_id');
public $pageid;
public $isunique;
public $hitcount;
public $english_id;
public static $article_id;
function __construct(){
return PHPCount::article_id = PHPCount::get_article_id();
}
public static function set_article_id($articleid){
PHPCount::article_id = $articleid;
}
public static function get_article_id(){
return PHPCount::article_id;
}
public static function AddHit($pageID, $visitorID){
HitTest::Cleanup();
self::CreateCountsIfNotPresent($pageID);
if(HitTest::UniqueHit($pageID, $visitorID)){
self::CountHit($pageID, true);
HitTest::LogHit($pageID, $visitorID);
}
self::CountHit($pageID, false);
}
/*
* Returns (int) the amount of hits a page has
* $pageID - the page identifier
* $unique - true if you want unique hit count
*/
public static function GetHits($pageID, $unique = false){
global $database;
self::CreateCountsIfNotPresent($pageID);
$pageID = $database->escape_value($pageID);
$unique = $unique ? '1' : '0';
$q = "SELECT hitcount FROM hits WHERE ";
$q .= get_article_id()=$pageID;
$q .=" AND isunique={$unique}";
$getHitCount = static::find_by_sql($q);
if(sizeof($getHitCount) >= 1){
foreach($getHitCount as $hit){
return (int)$hit->hitcount;
}
}else{
die("Fatal: Missing hit count from database!");
}
}
/*
* Returns the total amount of hits to the entire website
* When $unique is FALSE, it returns the sum of all non-unique hit counts
* for every page. When $unique is TRUE, it returns the sum of all unique
* hit counts for every page, so the value that's returned IS NOT the
* amount of site-wide unique hits, it is the sum of each page's unique
* hit count.
*/
public static function GetTotalHits($unique = false){
//global $phpcount_con;
$total = 0;
$unique = $unique ? '1' : '0';
$q = "SELECT hitcount FROM hits WHERE isunique={$unique}";
$count = static::find_by_sql($q);
foreach($count as $hit){
$total += (int)$hit->hitcount;
}
return $total;
}
private static function CountHit($pageID, $unique){
global $database;
$unique = $unique ? '1' : '0';
$safeID = $database->escape_value($pageID);
$q ="UPDATE hits SET hitcount = hitcount + 1 WHERE ";
$q .=get_article_id()=$safeID;
$q .=" AND isunique={$unique}";
mysqli_query($database->connection,$q);
}
private static function CreateCountsIfNotPresent($pageID){
global $database;
$pageID = $database->escape_value($pageID);
$q = "SELECT pageid FROM hits WHERE ";
$q .=get_article_id()=$pageID;
$q .=" AND isunique='0'";
$createCount = static::find_by_sql($q);
if($q === false || sizeof($createCount) < 1){
$sql ="INSERT INTO hits(";
$sql .=get_article_id();
$sql .=", isunique, hitcount) VALUES(";
$sql .=$pageID;
$sql .=", '0', '0')";
mysqli_query($database->connection,$sql);
}
//check unique row
$q ="SELECT "get_article_id();
$q .=" FROM hits WHERE ";
$q .=get_article_id()=$pageID;
$q .=" AND isunique='1'";
$createCount = static::find_by_sql($q);
if($q === false || sizeof($createCount) < 1){
$sql ="INSERT INTO hits (";
$sql .=get_article_id();
$sql .=", isunique, hitcount) VALUES('$pageID', '1', '0')"
mysqli_query($database->connection,$sql);
echo mysqli_error($database->connection);
}
}
}
访问静态类变量需要一个$-符号,如下所示:
PHPCount::$article_id
因此,至少这些方法需要改变
// I'd propose to pass the article ID as a parameter here
function __construct( $theArticleID ){
PHPCount::$article_id = $theArticleID;
}
public static function set_article_id($articleid){
PHPCount::$article_id = $articleid;
}
public static function get_article_id(){
return PHPCount::$article_id;
}
这是一个你想要比较的赋值;但是从构造函数返回任何内容都是毫无意义的。我想将article_id分配给get方法,以便在设置变量时根据setterPlease发布确切的错误消息!下面是我得到的错误:尖叫:错误抑制被忽略!分析错误:语法错误,在第66行的C:\wamp\www\site1\includes\hit_test.inc.php中出现意外的“=”,第66行是return PHPCount::article_id=PHPCount::get_article_id;谢谢,答案删除了错误,但不幸的是,我现在得到了这个错误:无法在第94行的C:\wamp\www\site1\includes\hit\u test.inc.php中的写上下文中使用函数返回值,因为我使用get\u article\u id=$pageid构造函数应该做什么?它应该初始化项目id吗?如果是,为什么要用它自己的值初始化它呢?构造函数假设获取getter返回的任何内容的article_id。例如,我使用set_article_id某物,然后实例化hit_test,使article_id的值=某物。我希望我没有错,我建议使用构造函数传递ID。由于该类管理文章,因此这是执行此任务的规范方法。