#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:
Последовательное выполнение. Таким образом, он будет выполнять каждую функцию / оператор по порядку сверху вниз, ожидая завершения каждой функции / оператора перед вызовом следующей, затем он достигнет конца цикла и начнется снова с начала.