Это может быть простой вопрос, но я не смог найти ответ ..
Если у меня есть класс, и я объявляю значение переменной внутри функции, вызываемой из оператора 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." \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;
}
}