23 במרץ, 2009
include יוסיף את הקובץ בכל פעם שנקרא לו, include_once יוסיף את הקובץ רק פעם אחת - אם יש באותו עמוד לדוגמה 2 קריאות ל include_once רק הראשונה תמומש.
require למעשה זהה לחלוטין לinclude למעט העובדה שאם הקובץ לא קיים תתרחש שגיאה קריטית.
מאת אביב רונן בPHP | אין תגובות
23 במרץ, 2009
printf נותנת אפשרות לעצב את הפלט (מיקומים וכו).
גם print וגם echo מדפיסות את מה שאנו מעבירים להם, ההבדל הוא ש print היא פונקציה, ולכן ניתן לעשות לעשות בה שימוש בדברים יותר מורכבים.
מאת אביב רונן בPHP | אין תגובות
21 בספט', 2008
The Value Object Pattern in PHP
התבנית בדרכ משמשת לייצוג "יישות" עם או בלי BUSINESS LOGIN, לדוגמה "לקוח", "מטבע","ארנק","תאריך"
דוגמה טובה היא "לקוח" - ללקוח יש שם פרטי, שם משפחה, טלפון, מס מזהה:
הדבר המשותף לכל הלקוחות הוא מבנה הנתונים שלהם, לכולם יש שם, שם משפחה, טלפון (אפילו אם חלק מהמידע חסר, המבנה זהה בכולם),
המבדיל אותם הוא הערכים - ללקוח אחד קוראים אבי וללקוח השני קוראים יחזקל.
Value Object עוזרת לנו להבדיל בין מספר עצמים שרצים במקביל.
ייתרון עיקרי של שימוש בתבנית VALUE OBJECT הוא היכולת להשתמש בקלות באותו CLASS של קוד במערכות שונות.
הדבר העיקרי שחשוב לזכור הוא שאם אנו משנים ערך של יישות VALUE OBJECT אחת, שהישויות הרצות האחרות לא יישתנו - אם נשנה את השם של אבי לאביב, חשוב לשמור שליחזקל לא ייקרה כלום.
בשביל להמחיש, אנו נקח דוגמה פשוטה של מטבע "שקל ישראלי" וניישם אותו בתבנית VALUE OBJECT.
<?php
class shekel
{
protected $amount;
public function __construct($amount=0)
{
$this->amount=(float)$amount;
}
public function getamount()
{
return $this->amount;
}
public function addtoamount($shekel)
{
return new shekel($this->amount + $shekel->getamount());
}
}
?>
הבהרות ודגשים:
בפונקציה addtoamount - הסיבה שאנו מחזירים אוביקט שקל חדש ולא את הערך הנוכחי של האוביקט היא למצבים שבהם יש כמה מופעים של אותו אוביקט באותה ריצה, ככה, אנו נצטרך להגדיר רק אוביקט אחד, ונוכל לעבוד איתו בהמשך בקוד ללא חשש - בPHP 5, נשלח באופן אוטמטי פויינטר לאוביקט הנוכחי.
בהצלחה!
מאת אביב רונן בPHP | אין תגובות
2 במרץ, 2008
class SomeCaseClass {
var $samplevar;
function SomeCaseClass($samplevar) {
$this->samplevar = $samplevar;
}
}$ClassVar = new SomeCaseClass('Sample Var');echo (get_class($holland)." "\n");
בPHP4, התוצאה תהיה
somecaseclass , לעומת זאת, חשוב לשים לב, שבPHP5, התוצאה תהיה:
SomeCaseClass.
מאת אביב רונן בPHP | אין תגובות
בPHP 4, יכולנו לבצע CASTING למשנה באופן פשוט,
לדוגמה:
class casttest {
function set_id($id) {
$this-> = $id;
}
}
$test1 = new casttest;echo (int) $test1, "\n";
התוצאה, כפי שבוודאי ניחשתם, תהיה 1 כיוון שיש ערך למה שהדפסנו.
לעומת זאת, בPHP5, התוצאה תהיה:
Notice: Object of class Country could not be converted to integer in - on line X
והערך אשר נקבל יהיה 1,
על מנת לפתור את הבעיה, ואת ההבדלים בין גירסה 4 ל5, כל שעלינו לעשות הוא להוסיף :
zend.ze1_compatibility_mode = 1
וואלה!

