הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   איך פועלת מערכת טמפלטים (https://hosts.co.il/forums/showthread.php?t=72499)

daMn 11-03-09 21:28

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 702474)
require כמובן. אפשר גם לכתוב פונקציה שתדפיס קובץ תצוגה כלשהו ולהעביר אליה פרמטרים בנוסף. ככה שיהיה ניתן לדוגמא להגדיר פרמטר בקוד ה PHP שלך בשם var$ ואז בקובץ הטמפלייט יהיה ניתן להשתמש בו.

כן גם זה צריך, אני בעיקרון משתמש בob.
PHP קוד:

function get_include_contents($filename) {
    if (
is_file($filename)) {
        
ob_start();
        include 
$filename;
        
$contents ob_get_contents();
        
ob_end_clean();
        return 
$contents;
    }
    return 
false;



vadimg88 11-03-09 21:35

אני משתמש בזה:

PHP קוד:

public function renderInternal($_viewFile_,$_data_=null,$_return_=false)
    {
        
// we use special variable names here to avoid conflict when extracting data
        
if(is_array($_data_))
            
extract($_data_,EXTR_PREFIX_SAME,'data');
        else
            
$data=$_data_;
        if(
$_return_)
        {
            
ob_start();
            
ob_implicit_flush(false);
            require(
$_viewFile_);
            return 
ob_get_clean();
        }
        else
            require(
$_viewFile_);
    } 

ואז השימוש:

PHP קוד:

$this->renderInternal('something.phtml', array('somevar' => $var)); 

ואז בקובץ phtml אני עושה:

PHP קוד:

<!-- some html here -->
<?php echo $somevar?>
<!-- some html here -->


Daniel 12-03-09 00:20

לפי דעתי OB לא צריך לשמש במערכת....
יש פעמים שבהם חייבים להשתמש ב-OB (אגב lack של תמיכה מ-PHP בנוגע להצגת נתונים, לדוגמא מ-phpinfo),
אבל בטמפלייט? אני ממש לא אוהב את זה, אני מעדיף להשתמש יותר בקבצי סקין עם <if> (כאשר אני משתמש בעוד כמה דברים כדי לקצר תהליכים), נכון שזה דורש גם parsing של הקוד - אבל לפי דעתי זה יותר דינאמי ויותר נוח.

נכון שבסופו של דבר - עדיף בלי קלאסים, בלי מערכת טמפלייטים, בלי גרשיים כפולות ("), לדאוג שהשם של המשתמש יהיה כמה שיותר קצר... אבל היי! יש גבול לרמה של היעילות שצריך שתיהיה.... קוד PHP מתקמפל בכל הרצה, זה מספיק... אתה תחסוך את האקסטרה זמן אם תשתמש ב-APC בשביל העניין....

אני מעדיף שהמערכת שלי תרוץ 50.1 שניות ולא 50 שניות אבל אני אדע שאחר כך כשאצטרך לבצע בה שינויים, זה לא יגזול ממני כמעט שום מאמץ..
חוץ מזה שאתה יכול גם לבצע cache לטמפלייטס...

intercooler3819 12-03-09 01:40

אבל אתה תדע שאתה צריך לדעת סינטקס בעוד שאם יבוא בחור חדש ויעיף מבט על הקוד וירצה לשפץ אותו ולעשות לו מתיחת פנים הוא יצטרך לקרוא את המערכת טמפלטים שלך,ף ללמוד אותה ואז להתחיל לעבוד

ד'א ואדים הסינטקס הבא אמור להכנס בPHP6 כמו שאני זוכר חח
<?php=$var;?>

(הגיע הזמן.. ?> לא תומך תמיד ואם לא צריך לעשות PARSING)

וואדים מתישהו בעבר בדקתי את זה
מכל הבאים
include();
require();
require_once();
include_once();

האינקלוד הרגיל הכי מהיר
יש לי גם הסבר לזה אפילו מבלי להריץ את הדברים אבל אני עוד רגע נרדם..

Shon12 12-03-09 02:03

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 702513)
אבל אתה תדע שאתה צריך לדעת סינטקס בעוד שאם יבוא בחור חדש ויעיף מבט על הקוד וירצה לשפץ אותו ולעשות לו מתיחת פנים הוא יצטרך לקרוא את המערכת טמפלטים שלך,ף ללמוד אותה ואז להתחיל לעבוד

ד'א ואדים הסינטקס הבא אמור להכנס בPHP6 כמו שאני זוכר חח
<?php=$var;?>

(הגיע הזמן.. ?> לא תומך תמיד ואם לא צריך לעשות PARSING)

וואדים מתישהו בעבר בדקתי את זה
מכל הבאים
include();
require();
require_once();
include_once();

האינקלוד הרגיל הכי מהיר
יש לי גם הסבר לזה אפילו מבלי להריץ את הדברים אבל אני עוד רגע נרדם..

אני לא יודע מה יש בינך לבין וואדים...
ואני גם לא ממש מכיר את שניכם, אבל אני חייב להגיב לזה - אתה כל הזמן מחפש אותו בקטנות.
איפה לשים לו רגל, ככה זה נראה כלפי חוץ(לי לפחות).

vadimg88 12-03-09 06:59

כמו שאמרתי כל אחד יקח את מה שהוא למד כאן וינסה את זה בעצמו. לאחר מכן הוא ידע עם מה הכי כדי לו להשתמש.

AlmogBaku 12-03-09 15:36

אני בכל אופן בחרתי להשתמש בשיטה של evaluate לקוד.
PHP קוד:

$skin file_get_contents("skins/" $skinName "/index.php");
$skin skinTags($skin);
eval(
"?>" $skin); 


פשוט וקל, לא עושה בעיות לא מסבך לא כלום. מניסיון.

intercooler3819 12-03-09 17:27

ציטוט:

נכתב במקור על ידי Shon12 (פרסם 702515)
אני לא יודע מה יש בינך לבין וואדים...
ואני גם לא ממש מכיר את שניכם, אבל אני חייב להגיב לזה - אתה כל הזמן מחפש אותו בקטנות.
איפה לשים לו רגל, ככה זה נראה כלפי חוץ(לי לפחות).

חח ההודעה האחרונה הייתה מופנת אל MASTER T זה באמת לא היה ברור, מצטער

ואממ לא אני לא מחפש אף אחד - באמת שלא (:

וואדים - בחור נחמד, גדול (יש בינינו כמה שנים טובות) ופיקח |Lol|

vadimg88 12-03-09 17:45

אני בסך הכל בן 21, אז אלה אם כן אתה בן 14 אז אני לא כל כך גדול. :)

Daniel 12-03-09 18:52

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 702595)
חח ההודעה האחרונה הייתה מופנת אל MASTER T זה באמת לא היה ברור, מצטער

ואממ לא אני לא מחפש אף אחד - באמת שלא (:

וואדים - בחור נחמד, גדול (יש בינינו כמה שנים טובות) ופיקח |Lol|

P=
X: "פלוני, אתה מתכנת לא טוב"
W: "היי - אל תגיד לאנשים את זה"
X: "אוקיי, MasterT, אתה מתכנת לא טוב"


בכל מקרה, וואדים, בשבילי תמיד תיהיה גדול P= אגב, ב-PML (PHP Mailing List) למיטב זכרוני לפני מספר ימים מישהו הציגאת השאלה של include vs eval, תעיף מבט =]


כל הזמנים הם GMT +2. הזמן כעת הוא 14:23.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ