Class 使用新参数再次调用php类函数

Class 使用新参数再次调用php类函数,class,Class,我调用函数时遇到问题 $categ->categ_body() 这是第二次参数没有改变 $categ = new Categories("Autos & Vehicles"); $categ->categ_body(60*60*24); $adm_json_arr["a_v_num_last_24_h_videos"] = $categ->body_vid_num; // last 7 days $categ->categ_body(60*60*24*7); $a

我调用函数时遇到问题

$categ->categ_body()

这是第二次参数没有改变

$categ = new Categories("Autos & Vehicles"); 

$categ->categ_body(60*60*24);
$adm_json_arr["a_v_num_last_24_h_videos"] = $categ->body_vid_num;

// last 7 days
$categ->categ_body(60*60*24*7);
$adm_json_arr["a_v_num_last_7_d_videos"] = $categ->body_vid_num;
当我调用要更改参数的函数时,是否需要这样做,或者我必须再次调用该类

function categ_body($time){
        require $_SERVER["DOCUMENT_ROOT"] . '/include/database/connect_cnt.php';
        $time2 = time() - ($time *2);
        $this->time = $time;
        $time = time() - $time;

        $stmt = $conn->prepare("SELECT COUNT(Id) AS Id_count FROM video WHERE Category = '" .$this->categ. 
                               "' AND Published = '1' AND Date > '" .$time. "'");

        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($ctg_last_videos);
        $stmt->fetch();

        $this->body_vid_num = number_format($ctg_last_videos);
 }
所有的问题都与$time参数有关,该参数保持不变

60*60*24

而且不会变为

60*60*24*7


你在categ_body()函数中做什么

您需要在该函数中设置body\u vid\u num。

您可以尝试

$adm_json_arr["a_v_num_last_24_h_videos"] = $categ->categ_body(60*60*24);
$adm_json_arr["a_v_num_last_7_d_videos"] = $categ->categ_body(60*60*24*7);

有一个像“接受者”和“接受者”这样的东西:

class Categories{
 public $body_vid_num;

 public function setBodyVidNum($num){
   // some process or logic
   ...
   $this->body_vid_num = $some_value;
 }

 public function getBodyVidNum(){
   return $this->body_vid_num;
 }

}
然后像这样使用它:

$categ->setBodyVidNum(60*60*24);
$adm_json_arr["a_v_num_last_24_h_videos"] = $categ->getBodyVidNum();

// last 7 days
$categ->setBodyVidNum(60*60*24*7);
$adm_json_arr["a_v_num_last_7_d_videos"] = $categ->getBodyVidNum();

我首先更改categ_body()函数,以接收mysql日期子间隔文本,而不是秒数。然后,我将修改查询以利用它。然后,为了只调用一次,我将返回分配给类变量的值

function categ_body($time = '24 HOUR'){
    require $_SERVER["DOCUMENT_ROOT"] . '/include/database/connect_cnt.php';

    $stmt = $conn->prepare("SELECT COUNT(Id) AS Id_count FROM video WHERE Category = '" .$this->categ.
    "' AND Published = '1' AND Date > UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL {$time}))");

    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($ctg_last_videos);
    $stmt->fetch();

    $this->body_vid_num = number_format($ctg_last_videos);
    return number_format($ctg_last_videos);
}
现在,只需调用函数一次并传入正确的参数:

// No need to pass in a param here, since we set the default value of time
// to '24 HOUR'
$adm_json_arr["a_v_num_last_24_h_videos"] = $categ->setBodyVidNum();
$adm_json_arr["a_v_num_last_7_d_videos"] = $categ->setBodyVidNum('7 DAY');
从setter返回一个值不是一件正常的事情,但也不完全是一件坏事。如果你觉得你更喜欢传统风格,你可以:

// No need to pass in a param here, since we set the default value of time
// to '24 HOUR'
$categ->setBodyVidNum();
$adm_json_arr["a_v_num_last_24_h_videos"] = $categ->getBodyVidNum();

$categ->setBodyVidNum('7 DAY');
$adm_json_arr["a_v_num_last_7_d_videos"] = $categ->getBodyVidNum();

请编辑您的帖子并包含类别类的代码。如果我们不知道什么代码在
categ\u body()