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   Shahcheraghean 

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

  Posted 09 April 2013 - 09:11 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

#2 User is offline   faridplus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 93
  • Joined: 28-March 12

Posted 10 April 2013 - 01:24 AM

View PostShahcheraghean, on 09 April 2013 - 09:11 AM, said:

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




اگر منظورت رو درست فهمیده باشم میتونی از static استفاده کنی
نحوه تعریف:


class MyClass {
  	public static $myProperty;
  	public static function myMethod(){
        	echo 'Hello World!';
  	};
}


نحوه دسترسی:

MyClass::myProperty;
MyClass::myMethod();


What you give is what you get (WYGIWYG)

If you liked my post, just give it a +1. that's all!
1

#3 User is offline   Shahcheraghean 

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

Posted 10 April 2013 - 02:40 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!
1

#4 User is offline   faridplus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 93
  • Joined: 28-March 12

Posted 10 April 2013 - 04:47 AM

View PostShahcheraghean, on 10 April 2013 - 02:40 AM, said:

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



راستش بایدی وجود نداره بیشتر به سلیقه خودتون و کاری که قراره این method یا property انجام بده بستگی داره
اگه مربوط به یه مدل خاصی میشه بذارش توی اون مدل
اگه قراره یه پردازش کلی انجام بده (مثلا convert یه مقدار به یه مقدار دیگه) میتونی یه کلاس Helper درست کنی بذاریش توی دایرکتوری component که البته باید توی فایل config اونو import کنی تا Yii بشناستش

و .....


What you give is what you get (WYGIWYG)

If you liked my post, just give it a +1. that's all!
0

#5 User is offline   rezaonline.net 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 116
  • Joined: 20-June 12

Posted 10 April 2013 - 07:18 AM

من خودم یه کلاس رجیستری بعنوان کامپوننت استفاده میکنم ، وقتی میخوام چیزی رو ست کنم و جایی دیگه بگیرم خیلی خوبه

// protected/components/Registry.php
class Registry extends stdclass
{
	static private $ins = NULL ;
	
	static public function ins()
	{
		if(self::$ins === NULL)
			self::$ins = new self;
		return self::$ins ;
	}
}


استفاده

// model or controller
$somevar = Registry::ins()->somevar;
if(empty($somevar))
	Registry::ins()->somevar='reza';
	
	
// controller or view or other model
echo Registry::ins()->somevar;

rezaworkshop.ir - rezaonline.net/blog
php5 , mysql , html5 , css3 , jquery + ajax
1

#6 User is offline   Shahcheraghean 

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

Posted 21 April 2013 - 09:26 AM

دست شما درد نکنه. این stdClass چیه؟

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

#7 User is offline   Shahcheraghean 

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

Posted 21 April 2013 - 09:43 AM

منظورم اینه که مثلا یه پراپرتی یا یه متد را در نظر بگیرم و در همه مدل ها بتونم از آن استفاده کنم. و مجدد آن را برای هر مدل جدا گانه تعریف نکنم.
قاعدتا باید توی خود کلاس اصلی CActiveRecord این کار را بکنم و یا بیام یه کلاس از آن ارث بگیرم و همه مدلهایم را از این کلاس جدید extended کنم.
برای این موضوع راهی هست؟

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   Hesam 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 12-November 12
  • Location:Toronto

Posted 21 April 2013 - 12:39 PM

اگه واقعا همه مدل ها بهش نیاز دارند به نظرم راه حل خودت خوب و منطقیه.

View PostShahcheraghean, on 21 April 2013 - 09:43 AM, said:

منظورم اینه که مثلا یه پراپرتی یا یه متد را در نظر بگیرم و در همه مدل ها بتونم از آن استفاده کنم. و مجدد آن را برای هر مدل جدا گانه تعریف نکنم.
قاعدتا باید توی خود کلاس اصلی CActiveRecord این کار را بکنم و یا بیام یه کلاس از آن ارث بگیرم و همه مدلهایم را از این کلاس جدید extended کنم.
برای این موضوع راهی هست؟


0

#9 User is offline   rezaonline.net 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 116
  • Joined: 20-June 12

Posted 21 April 2013 - 01:31 PM

الان توی هر مدلی یا کنترلری یک پروپرتی از رجیستری رو ست کنی ، در مدل و کنترلر بعدش و حتی ویو هم قابل دسترس هست دیگه مشکل چیه؟

rezaworkshop.ir - rezaonline.net/blog
php5 , mysql , html5 , css3 , jquery + ajax
0

#10 User is offline   Shahcheraghean 

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

Posted 22 April 2013 - 12:16 AM

نه ببینید آقا منظورم اون نیست. اون روشی که شما مد نظرتون هست فقط برای یک مدل بوده و در جاهای دیگر قابل فراخوانی هست.
بنده منظورم این است که بیام مثلا یه متد یا پراپرتی را خاصا توی CActiveRecord تعریف کنم و برای هر مدل ممکنه با یک مقدار یا یک طور استفاده داشته باشد.
مثلا قبلا توی کیک دیده بودم که یه کلاس bootStarp داره که وقتی یک متد کلی می خواهی تعریف کنی اونجا تعریف می کنی و در هر کنترلری قابل فراخوای است.
یه چیزی شبیه به همین کامپونتن خودمان. می خوام ببینم خود Yii راهی داره یا نه؟

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

#11 User is offline   rezaonline.net 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 116
  • Joined: 20-June 12

Posted 22 April 2013 - 05:04 PM

کمی بیشتر توضیح بدید خوب میشه در کل هر پرپرتی باید از جایی ست شده باشه بالاخره اون روشی که گفتم همه جا میتونید ست کنید همه جا هم میتونید بگیرید مشکلی نداره چه آبجت باشه چه هر چیزی

rezaworkshop.ir - rezaonline.net/blog
php5 , mysql , html5 , css3 , jquery + ajax
0

#12 User is offline   Shahcheraghean 

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

Posted 23 April 2013 - 01:30 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

#13 User is offline   Shahcheraghean 

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

Posted 27 April 2013 - 02:53 AM

View Postfaridplus, on 10 April 2013 - 01:24 AM, said:


اگر منظورت رو درست فهمیده باشم میتونی از static استفاده کنی
نحوه تعریف:


class MyClass {
  	public static $myProperty;
  	public static function myMethod(){
        	echo 'Hello World!';
  	};
}


نحوه دسترسی:

MyClass::myProperty;
MyClass::myMethod();



برای این مو.ضوع که گفتید اگر اون کلاس را از CComponent ارث بگیرم چطوره؟

توی جای دیگه گفته بودند که بیام از CBehavior ارث بگیرم. کدام درسته؟ و هرکدام به چه دردی می خورند؟

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

#14 User is offline   Parham Doustdar 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 33
  • Joined: 02-April 11

Posted 27 April 2013 - 06:16 AM

CBehavior برای functionality جدید که قرار هست به مودل اضافه بشه به کار میره. مثلا اگه می خواین مدل شما به صورت tree ذخیره بشه, می تونید TreeBehavior رو دانلود کنید و به مدلتون اضافه کنید.

CComponent برای library ها یا helper ها به کار می ره. مثلا DateTime یا Text (که مثلا قرار هست برای کار کردن با زمان, تاریخ, و یا متن به شما کمک کنن).

1

#15 User is offline   Shahcheraghean 

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

Posted 27 April 2013 - 08:51 AM

View PostParham Doustdar, on 27 April 2013 - 06:16 AM, said:

CBehavior برای functionality جدید که قرار هست به مودل اضافه بشه به کار میره. مثلا اگه می خواین مدل شما به صورت tree ذخیره بشه, می تونید TreeBehavior رو دانلود کنید و به مدلتون اضافه کنید.

CComponent برای library ها یا helper ها به کار می ره. مثلا DateTime یا Text (که مثلا قرار هست برای کار کردن با زمان, تاریخ, و یا متن به شما کمک کنن).


ببخشید میشه این fanctionality برای CBehavior و CComponent را بیشتر توضیح دهید.

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

#16 User is offline   Parham Doustdar 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 33
  • Joined: 02-April 11

Posted 28 April 2013 - 12:09 AM

[rtl]ففکر می کنم این صفحه بهتر از من توضیح می ده: جعقم="http://www.yiiframework.com/doc/guide/1.1/en/basics.componenف"
component[/url].

اگر هنوز متوجه نشدید خوشحال می شم کمکی بکنم.

ممنون.
0

#17 User is offline   faridplus 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 93
  • Joined: 28-March 12

Posted 28 April 2013 - 03:39 AM

View PostShahcheraghean, on 27 April 2013 - 02:53 AM, said:

برای این مو.ضوع که گفتید اگر اون کلاس را از CComponent ارث بگیرم چطوره؟

توی جای دیگه گفته بودند که بیام از CBehavior ارث بگیرم. کدام درسته؟ و هرکدام به چه دردی می خورند؟



تا شما نگید که این Method و Property دقیقا چه کاری قراره انجام بدن نمیشه گفت Behavoir خوبه یا Component یا Event ....
اگر فرض کنیم همون کانورتی باشه توی پست بالا گفتی در این صورت بهترین راه حل به نظر من تعریف یه تابع convert توی یه کلاس پدر و override کردن این تابع توی تمام کلاسهای (مدلهای) فرزند هست
در مورد اون سه تا مفهوم هم این جوری بگم که هر component میتونه چند تا Behavoir و همینطور چند تا Event داشته باشه و هر Behavoir هم میتونه چند تا Event داشته باشه و در عین حال هر کدوم از این سه تا میتونن به طور مستقل هم تعریف بشن و نیازی نیست حتما توی همدیگه تعریف بشن بنابراین بستگی به پیاده سازی خودت داره
چیزی که متداوله اینه که component چند تا پردازش رو توی دل خودش داره اما Behavoir مختص انجام دادن یه کار هست و با اضافه کردن چند تا Behavoir به یه component میتونیم یه چیزی شبیه به قابلیت ارث بری چندگانه رو داشته باشیم که متاسفانه PHP به خودی خود پشتیبانی نمیکنه
برای توضیحات بیشتر میتونی هم اون لینکی که پرهام داده رو بخونی هم کتاب cookbook که مثالهای خوبی زده

Bahavoir = Behavior , sorry ;)

What you give is what you get (WYGIWYG)

If you liked my post, just give it a +1. that's all!
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