Yii Framework Forum: تعریف کلاس و استفاده از پرنت - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

تعریف کلاس و استفاده از پرنت

#1 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 07 March 2013 - 05:27 AM


یه توضیح کوتاه در مورد کد زیر میخوام دوستان لطف کنن که این توع تعریف چیه


    public static function model($className=__CLASS__)     {         return parent::model($className);     }
    public function tableName()     {         return 'tbl_persons';     }
و این که نام تابع tableName مختص خود فریم ورک هستش؟

0

#2 User is offline   mereeelin 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 42
  • Joined: 29-October 11

Posted 07 March 2013 - 06:49 AM

View PostManee, on 07 March 2013 - 05:27 AM, said:


یه توضیح کوتاه در مورد کد زیر میخوام دوستان لطف کنن که این توع تعریف چیه


    public static function model($className=__CLASS__)     {         return parent::model($className);     }
    public function tableName()     {         return 'tbl_persons';     }
و این که نام تابع tableName مختص خود فریم ورک هستش؟



در مورد تابع اول پرنتی که دارد از آن استفاده می کند اشاره به کلاسی دارد که این مدل از آن اکستند شده است که در اینجا اکتیورکورد می باشد و از این تابع که یک تابع استاتیک می باشد در مواردی مانند مثال زیر استفاده می کنیم
Post::model()->findAll();
که همانطور که میبینید از طریق این تابع از تابع جستجو در اکتیورکورد استفاده می کنیم


در مورد تابع دوم هم باید بگم که از این تابع بیشتر خود فرم ورک بزای شناسایی جدول دیتابیسی که مدلمان با آن در ارتباط است استفاده می کند و خیلی برای ما قابلیت استفاده در برنامه نویسی ندارد

0

#3 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 07 March 2013 - 10:47 AM

سلام. من الان این تیکه رو درست متوجه نشدم

 return parent::model($className);
یعنی پرنت به کلاس پدری اشاره میکنه که مدل توشه؟ کارش اینه که یه فایند آل میزنه به دیتابیس؟
این تکه کد زیر هم تو مودل دموی بلاگ هستش:

	protected function afterSave()
	{
		parent::afterSave();
		Tag::model()->updateFrequency($this->_oldTags, $this->tags);
	}


اینجا پرنتی که ابتدا زده چیکار میکنه؟ میره از پدر فراخانی میکنه ولی کارش چیه؟ اینجا که هیچ چیزی بهش فرستاده نشده فقط اومده صدا زده

0

#4 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 08 March 2013 - 04:42 PM

سلام.کسي اين مورد بالايي روتوضيح ميده

0

#5 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

Posted 09 March 2013 - 04:26 AM

اون فراخوانی که انجام شده آمده پرنت از کلاس پدرش را فراخوانی کرده البته خود همین کلاس هم میتونه متدی به همان نام داشته باشه. اینه مربوط به مباحث شئ گرایی میشه.
خط آخر هم اومده متد updateFrequency() از مدل Tag را فرا خونی کرده است.

www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#6 User is offline   Manee 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 103
  • Joined: 23-September 12

Posted 09 March 2013 - 04:57 AM

اینکه فراخانی کرده رو میدونم ولی معنیش چیه؟ نه چیزی ارسال کرده و نه چیزی گرفته
الان این فراخانی به چه درد میخوره؟

0

#7 User is offline   Shahcheraghean 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 478
  • Joined: 12-December 12
  • Location:Mashhad, IRAN

Posted 09 March 2013 - 05:19 AM

توی همون داک مثال بلاگ گفته. اگر دست یادم باشه این متد برای شمارش تعداد تگهای هر مطلب باید باشه.

www.shgn.ir
www.shgn.ir/yii-framework/
yii2.swsco.ir
In a world without any fences or walls,Who needs Gates or Windows!
0

#8 User is offline   Reza m 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 148
  • Joined: 07-March 12

Posted 09 March 2013 - 04:16 PM



اینجا فقط همین متد رو از کلاس parent فراخونی کرده و لازم نیست که حتما ورودی یا خروجی داشته باشه، در برنامه نویسی شی گرا اگه هدف از بازنویسی (override) یک متد از کلاس parent گسترش و نه تغییر اون متد باشه، و از اونجا که معمولا این گسترش در امتداد کارهای انجام شده در parent هست، متد مورد نظر از کلاس parent رو فراخونی میکنند.

در این مورد متد afterSave از کلاس CActiveRecord ایونت onAfterSave رو اجرا کرده بنابراین برای اجرای این event باید این متد رو در کلاسهای child فراخونی کنیم.


1

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users