这可能是一个简单的问题,但我找不到答案..
如果我有一个类并且在一个函数中声明一个变量的值是从一个while语句调用的,那么稍后在另一个函数中使用该变量时该变量是否会变为数组中的下一个值?
ie ..我知道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." \r\n";
$headers .= "Content-type: text/html\r\n";
$headers .= "Bcc: stoneops@cornell.edu\r\n";
$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;
}
}
答案 0 :(得分:1)
通常情况下,它会从上到下逐个执行一系列代码。
如果有函数和方法,PHP解释器会标记它们,但除非从else处调用它们,否则不会执行它们。
调用一次函数或方法,将从顶部执行到return
语句。当它完成返回或做一些工作时,将到达并执行下一个项目。
答案 1 :(得分:1)
执行是按照调用的顺序完成的,因此它是一个连续的顺序。它是同步的,所以是的,PHP将等到一个函数及其子函数在它移动到下一个函数之前返回。这被称为 call stack 。
如果情况并非如此,那么你手上会有很多race conditions,这将使编程几乎不可能。
答案 2 :(得分:0)
顺序执行。因此它将按顺序从上到下执行每个函数/语句,等待每个函数/语句在调用下一个之前完成,然后它将在循环结束时再次开始。