Как выполняются функции в классе

#php #class #function

#php #класс #функция

Вопрос:

Это может быть простой вопрос, но я не смог найти ответ..

Если у меня есть класс и я объявляю значение переменной в функции, вызываемой из инструкции while, а затем использую эту переменную позже в другой функции, когда эта переменная изменяется на следующее значение в массиве?

т.е. .. Я знаю, что php выполняет форму кода сверху вниз, но верно ли это для классов и функций, вызываемых из с в другой функции. Ожидает ли php перехода к следующему элементу инструкции while до тех пор, пока не будут вызваны все функции и подфункции, или он вызывает функцию, а затем переходит к следующему элементу в списке??

 class myClass{
     public $cust;

     function __construct(){
        $sql = mysql_query("SOME QUERY");
        while($row = mysql_fetch_array($sql)){
            myClass::sendEmail();
        }
     }

     function sendEmail(){
    $this->cust = new selectDatabase();
    $this->cust->table = "customer_main";
    $this->cust->where = " WHERE customerID = '".$customerID."' ";
    $this->cust->getItems();

    $this->cust->name = $name;
    $this->cust->email = $email;     

            $sql = mysql_query("SELECT EmailTo, EmailFrom, EmailSubject, EmailBody
                                FROM system_email");
            $row = mysql_fetch_assc($sql);

            $to = myClass::dbReplace($row['EmailTo']);
            $From = myClass::dbReplace($row['EmailFrom']);
            $subject = myClass::dbReplace($row['EmailSubject']);
            $body = myClass::dbReplace($row['EmailBody']);

    $headers = "From: ".$from." rn";
    $headers .= "Content-type: text/htmlrn";
    $headers .= "Bcc: stoneops@cornell.edurn";
    $headers .= "X-Mailer: PHP/" . phpversion();

    mail( $to, $subject, $body, $headers);


     }
private function dbReplace($thisStr){
    $x = substr_count($thisStr,"DB[");
    $z = 0;
        $holdArry = array();
        while($z < $x){
            $rplStr = genEmail::findSubStr($thisStr);
            $t = substr_count($thisStr, "DB[".$rplStr."]");
            $rplStr2 = split(':', $rplStr);
            $thisStr = str_replace("DB[".$rplStr."]", $this->{$rplStr2[0]}->{$rplStr2[1]}, $thisStr);
            $z = $z  $t;
        }
    return $thisStr;
}

private function findSubStr($str){
    $pos = strpos($str, 'DB['); // outputs ER@EXAMPLE.com
    $pt1 = substr($str, ($pos   3) );
    $pos = strpos($pt1, ']');
    $pt2 = substr($pt1, -1 * strlen(substr($pt1, $pos)));
    $pt2 = str_replace($pt2, "", $pt1);
    return $pt2;
}
}
  

Комментарии:

1. Почему бы вам не попробовать это? Я не вижу лучшего способа выяснить. Также RTFM .

Ответ №1:

  • Обычно он будет выполняться сверху вниз, один за другим через последовательность кода.

  • Если существуют функции и методы, интерпретатор PHP пометит их, но они не будут выполняться, если они не вызваны из другого места.

  • Функция или метод, вызванный один раз, будет выполняться сверху до return инструкции. Когда он завершит возврат или выполнение некоторых заданий, будет достигнут и выполнен следующий элемент.

Ответ №2:

Выполнение выполняется в порядке их вызова, так что это последовательный порядок. Это синхронно, так что да, PHP будет ждать, пока функция и ее подфункции вернутся, прежде чем перейти к следующей. Это называется стеком вызовов.

Если бы это было не так, у вас было бы много условий гонки, что сделало бы программирование практически невозможным.

Ответ №3:

Последовательное выполнение. Таким образом, он будет выполнять каждую функцию / оператор по порядку сверху вниз, ожидая завершения каждой функции / оператора перед вызовом следующей, затем он достигнет конца цикла и начнется снова с начала.