היי , עקבתי אחרי מדריך של yii

  • פותח הנושא koler
  • פורסם בתאריך

koler

New member
היי , עקבתי אחרי מדריך של yii

בקישור הבא:
http://phpguide.co.il/מדריך+לYii+הפריימוורק+הכי+מתקדם+של+PHP++חלק+ד.htm

כשאר אני מנסה למצוא את מספר המשתמשים שנרשמו בצורה הבאה:

if(Account::userExists($user)==0)
$error[] = "שם המשתמש שבחרת תפוס.";

אני מקבל שגיאה כזו:

Internal Server Error
Declaration of Account::model() should be compatible with CActiveRecord::model($className = 'CActiveRec...')

An internal error occurred while the Web server was processing your request. Please contact the webmaster to report this problem.

Thank you.


אשמח אם תסתכלו גם בתצלום המסך .
כאילו שם הפונקציה מפריע לו.

מה אתם אומרים?
 

itaym02

New member
אתה בstrict mode,

זאת אומרת שאם יש לך מטודה שיורשת ממטודה אחרת, המימוש יכול להיות שונה, אבל החתימה של המטודה צריכה להיות זהה.
חתימה זה
scope (public,protected.private)
אם זה stattic או לא
הפרמטרים שמתקבלים, ואאל"ט ערכי הdefault של אותם פרמטרים.
אין override בphp.

(אתה תמיד יכול להחליף private ב protected ו אתה תמיד יכול להחליף protected בpublic, אך לא ההפך)
 

koler

New member
מה שאתה אומר זה

שאני לא יכול לטעון את המטודה הזו בגלל שהיא מוגנת?
 

itaym02

New member


מה שאני אומר זה שתעתיק לכאן את Account::model
ואת CActiveRecord::model
ונשחק ב"מצא את ההבדלים. לא אמור להיות הבדל בחתימה (מלבד מה שכתבתי לגבי private->protected->public
 

koler

New member
אותו הדבר

כלומר שתיהם public .
מה שכן שיניתי את הערכים שהיא מקבלת (כמו המטודה ממחלקת האב) כלומר עכשיו זה כך:

class Account extends CActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model(__CLASS__);
}


למה זה גם משפיע?
 
למעלה