Tamam, burada gerçekten şaşırıp anlaşma.
I use my cms with design patterns. Where's the last final output(in design template's main file: 'design.php'):
<div>{CONTENT_HEADER}</div>
<div style='float:left;width:25%'>{CONTENT_LEFT}</div>
<div style='float:left;width:50%'>{CONTENT_CENTER}</div>
<div style='float:left;width:25%'>{CONTENT_RIGHT}</div>
<div>{CONTENT_FOOTER}</div>
CONTENT_XXXX generater düşünce site modülleri olduğu durumlarda:
ob_start("gz_handler");
<....... LOAD ALL THE HEADER MODULES .......>
$output0 = ob_get_contents();
ob_end_clean();
ob_start("gz_handler");
<....... LOAD ALL THE LEFT SIDE MODULES .......>
$output1 = ob_get_contents();
ob_end_clean();
ob_start("gz_handler");
<....... LOAD ALL THE CENTER SIDE MODULES .......>
$output2 = ob_get_contents();
ob_end_clean();
ob_start("gz_handler");
<....... LOAD ALL THE RIGHT SIDE MODULES .......>
....
// That's I talk about, but this is just for static html, not variables
// Push to header finalizers to override default <title></title>
$header_finalizers_array['change_head_title_attr_to'] = $thread_data['topic_title'];
<....... END OF ALL THE RIGHT SIDE MODULES .......>
$output3 = ob_get_contents();
ob_end_clean();
ob_start("gz_handler");
<....... LOAD ALL THE FOOTER MODULES .......>
$output5 = ob_get_contents();
ob_end_clean();
define("CONTENT_HEADER", finalize_output($output0,$header_finalizers_array));
define("CONTENT_LEFT", finalize_output($output2,$left_finalizers_array));
define("CONTENT_CENTER", finalize_output($output3,$center_finalizers_array));
define("CONTENT_RIGHT", finalize_output($output4,$right_finalizers_array));
// No need finalizations, because there are no more parts, which call content changes
define("CONTENT_FOOTER", $output5);
Tüm vakaların% 95 ok. Ancak, SADECE (sağ taraf modülleri örn.) SONRAKİ SİDE tanımlanmış olacaktır (sol taraf modüller) Ben değişkenin içeriğini ALMAK İÇİN gereken bazı durumlar vardır
Benim koduyla, ben ex bunu değiştirmek mümkün, bunu istiyorum o zaman 'başlığı modülleri' site başlıklarını tanımlayabilirsiniz ama. sağ tarafı, ben güçlü olduğum için diziye eklemek tüm yan içeriği istemci tarayıcısına baskı ÖNCE değişkenlere generater olacak ama sonra idam edilecek veri gereksinimi, değiştirin.
Tüm bu sadece fonksiyon 1 hattı ile yapılabilir:
function finalize_output($output="",$fin_array=array()) {
<...>
$output = preg_replace("#<title>.*</title>#i", "<title>".$fin_array['change_head_title_attr_to']."</title>", $output, 1);
<...>
}
Now about my problem.
How to do the same with VARIABLES:
LEFT SIDE modülleri IN Ben bir cümle var (SORUN: $object):
if(isset($object)) {
$best_product = sqlArray(sqlQuery("SELECT * FROM tableA WHERE b='$object'"));
<..All the rest code of BEST's product..>
}
RIGHT SIDE modülleri IN ben sencence var (SORUN: $object):
<... Print LAST 10 PRODUCTS ***>
$res = sqlquery("SELECT * FROM tableA ORDER BY id DESC LIMIT 100);
while($data = sqlarray($res)) { <..PRINT PRODUCT INFO..> }
$new = rand(0,secured($_POST['user_input_new_products']));
for($i=1;$i<=$new;$i++) {
$price_diff_old_new1 = change_products_to_sql('fish_$i', 19.99);
$price_diff_old_new2 = push_product_to_sql('crab_$i', 16.99);
if($i==$new) {
$object = $price_diff_old_new1+$price_diff_old_new2;
}
}
THIS IS JUST EXAMPLE CODE OF WHAT I NEED TO DO(so don't go to details), but THE POINT IS THAT, that I need somehow to submit the variable to earlier point of source: One of solutions would be " USE GOTO ", but is it variable will be remebered.
Yani:
echo "JOB IS STARTED";
LABEL HOME:
<INCLUDED FILE : procuts.php >
if(isset($object) && check_is_number($object)) {
$a = $object;
}
if(isset($break_me) && $break_me) {
GOTO FINAL;
}
<END OF INCLUDE>
...
<INCLUDED FILE : upload.php >
$object = 999;
$break_me = true;
GOTO HOME;
<END OF INCLUDE>
}
LABEL FINAL:
echo "JOB IS DONE";
VE, WITHOUT GOTO bunu yapmanın başka bir yolu var olduğunu (GOTO çözeltisi (mümkün olur?))?
Ben şahsen bu kadar kod mümkün değildir düşündüm ama Php mümkün 5.3.0 beri, ben kodlu olması olası hale gelir. Misfortunelly Ben şirket kendi sunucularında Php 5.3.0 kullanacağız emin değilim, bu yüzden başka çözümler olduğunu umuyoruz.
Ayrıca ben bile hala GOTO Orada yardımcı olacak emin değilim.