类构造函数的参数

时间:2017-02-09 07:28:50

标签: php sql json class loops

我正在尝试调整我的类来处理存储在JSON文件中的事件的标记。你可以创建标签,删除它们,恢复它们,查看它们等等。在这个库的下面的代码中你可以看到我在构造函数期间从文件中检索数组,所以我使用它并在我的类的函数中操作它

class tagHandler {
private $tagsFile = "/home/thomassm/public_html/functions/php/tags.json";
private $LstTags;
private $LstReturn;

function __construct() {
    $this->LstTags = array();
    if(!file_exists ($this->tagsFile)){
        $fHND = fopen($this->tagsFile, "w");
        $tmpArray = array(array("EID","EName","EColor", "EDel"));
        fwrite($fHND, json_encode($tmpArray));
        fclose($fHND);
    }

    $encodedInput = file ($this->tagsFile);
    $this->LstTags = json_decode($encodedInput[0], true);
    if(!$this->LstTags) $this->LstTags = array();
}

function __destruct(){
    $this->update();
}
public function update(){
    $this->LstTags = array_values($this->LstTags);

    $fHND = fopen($this->tagsFile, "w");
    fwrite($fHND, json_encode($this->LstTags));
    fclose($fHND);

    //empty memory region
    $this->LstTags = array();
    $encodedInput = file ($this->tagsFile);
    $this->LstTags = json_decode($encodedInput[0], true);
}
//More functions that use the collected array here.

我正在努力调整课程以处理与我的活动签约的人。每个事件在我的数据库中都有一条记录,该记录将为一组注册的男性和注册的女性存储一个字段。我希望构造函数类从记录中获取数组,以便像上一个类一样操作它们。问题是获取数组我必须在数据库中搜索具有事件ID(EID)的记录,并且需要将一个变量传递给构造函数。更糟糕的是,此参数必须能够在循环中更改。例如,列出所有事件的页面必须在遍历每条记录的循环中使用此类,因此它可以检索数组以对其进行操作,然后在重复该过程以获取下一个事件之前将其显示在table / fullcalendar中。我已经把我到目前为止的代码放在了下面。它不完整(一些变量没有被重命名为男性和女性等)并且可能完全错误,但它会为您提供一个解释基础。

class signupHandler {
private $LstMaleS;
private $LstFemaleS;
private $LstReturn;

function __construct($IntEID) {
    $this->LstTags = array();

    $StrQuery = "SELECT MaleS, FemaleS FROM tblEvents WHERE EID = ?";

    if ($statement = TF_Core::$MySQLi->DB->prepare($StrQuery)) {
        $statement->bind_param('s',$IntEID);
        $statement->execute ();
        $results = $statement->get_result ();
    }

    $this->LstTags = json_decode($encodedInput[0], true);
    if(!$this->LstTags) $this->LstTags = array();
}

谢谢, 汤姆

1 个答案:

答案 0 :(得分:0)

function decodeNames($StrNames){
    $this->LstNames = array();
    $this->LstNames = json_decode($StrNames, true);
    if(!$this->LstNames) $this->LstNames = array();
    $this->LstNames = array_values($this->LstNames);
}

function update(){
    $this->LstNames = array_values($this->LstNames);
    return json_encode($this->LstNames);
}

public function addSignUp($StrNames, $StrUsername, $StrStatus){
    $this->decodeNames($StrNames);

    $BlnPresent = false;

    for($i = 0; $i < count($this->LstNames); $i++){
        if($this->LstNames[$i][0] == $StrUsername){
            $this->LstNames[$i][1] = $StrStatus;
            $BlnPresent = true;
        }
    }
    if($BlnPresent == false){
        array_push($this->LstNames, array($StrUsername, $StrStatus, date("Y-m-d H:i:s")));
    }
    return $this->update();
}

每次调用函数时,我都决定将编码的JSON数组传递给类。在每个函数之前,它被解码并变成一个数组,最后它被重新编码并返回到调用它的文件。现在我不再有任何构造函数或破坏函数。