آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

توسعه سیستم routing

javac  11 سال پیش  11 سال پیش
0 0

برای اینکه همچین URLای داشته باشیم شبیه سایت uncox :

https://account.uncox.com/user/message/ajaxGetAllNotify

یک کنترلر داریم به اسم user و بعدش بازم انگار یک کنترلر داریم  و بعدش متد ajaxGetAllNotify برای پیاده سازی این روش چیکار باید بکنیم؟

آیا user و message هر دو کنترلر هستند؟

 

 

 

+4 0
ببنید user یک کنترلر هست ، میتونه داخل خودش متد message رو صدا کنه و متد message هم یک پارامتر میگیره که مثلا ajaxGetAllNotify میتونه باشه (11 سال پیش)
0 0
خب اگر بخوایم به این شکل که گفتم به صورت nested همچین حالتی داشته باشیم چیکار باید کرد؟ فرض کنید یک کنترلر داریم به اسم admin که پنل مدیریت داخلش قرار داره حالا داخلش یه سری کنترلر داریم مثل user ، message ، ... ؟ (11 سال پیش)
0 0
درحالت فعلی مجبوریم کلی متد داخل کنترلر admin بنویسیم و شلوغ میشه... اگر ادمین هم به بخش های مختلفی تقسیم کنیم کد تمیزتری داریم (11 سال پیش)
+1 0
من مثال زدم ، شما میتونید کلاس های مختلف php رو ایجاد کنید و همونطور که گفتید تمیز تر میشه . البته بستگی به نیاز شما داره از اون کنترلر (11 سال پیش)
+1 0
شما میتونید همونطور که از داخل index.php یک کلاس کنترلر دیگه رو ران میکنید ، از داخل هز کلاس دیگه ای هم این کارو بکنید تا از زیادی متد ها توی یه کلاس جلوگیری کنید (11 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
javac  11 سال پیش
0 0

 class AdminController{
		   public function allPosts(){
			      //fetch all posts from model
   		} 
   		public function newPost(){
			      //insert post
		   }
		   public function removePost(){
			     //remove post
		   }
		   public function updatePost(){
			     //update post
   		}
		
		
   		public function allUsers(){
			     //fetch all users from model
		   }
   		public function newUser(){
     			//insert new user
		   }
		   public function removeUser(){
			     //remove user
		   }
		   public function updateUser(){
			     //update user
		   }
		
}

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

 در کنترلر admin بالا که مثال زدم ، الان همونطور که مشخصه عملیات مربوط به user و post نشون داده شده حالا اگر قرار باشه کلی عملیات دیگه هم نوشته بشه خیلی شلوغ میشه طبق توضیحات شما باید برای هرکدوم (user,post,...) کلاس جداگانه ایجاد بشه و دقیقا همین متدها اونجا هم نوشته بشه و اینجا آینه ای از اون متدها باشه. مثلا برای عملیاتهای مربوط به post به این شکل بشه:

 class AdminContoller{

public function newPost(){
Post::newPost();
}
public function removePost(){
Post::removePost();
}

}

آیا برداشتم درسته از توضیحات شما؟

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

 

+1 0
ببنید شما میتونید یک کنترلر مخصوص پست داشته باشید با متد های عمومی و نه استاتیک که اون کنترلر اکستندز شده از پدر خودش مثلا کنترلر ادمین هست و داخلش متد هاشون رو جدا کنید . (11 سال پیش)
0 0
متوجه نشدم! اگر یه مثال به صورت کد بزنید ممنون میشم (11 سال پیش)
پاسخ به سوال 
کاشی زاده  11 سال پیش
+1 0

اگر درست متوجه شده باشم شما میخواید که متد های موجود در AdminController رو در کلاس های مختلف خلاصه کنید .

شما میتونید یک کلاس جدید مثلا با عنوان Post بزنید که از AdminController اکستندز شده باشه اینطوری کانستراکتور AdminController هم صدا میشه و بررسی های لازم انجام میشه و داخل کلاس POST متد های مربوط به مدیریت پست ها رو قرار بدید  :

 class Post extends AdminController {
public function removePost(){

}
public function EditPost(){

}
}

 

پاسخ به سوال 
javac  11 سال پیش
0 0

مسئله اینجاست که چطور باید توی URL این کلاس و متدهاش رو صدا بزنیم ، مثلا اگر بخوایم یک پست رو ویرایش کنیم فرضا آدرسش میشه این چون قرار هست از پنل مدیریت ویرایش بشه:

 http://website.com/admin/editPost

اما طبق چیزی که گفتید باید اینو بزنیم:

 http://website.com/post/editPost

 در این حالتم مشکلی پیش نمیاد و میشه از طریق parent و کنستراکتورش سطح دسترسی رو مشخص کرد اما من میخوام که تماما بیان داخل admin و از اونجا دستور مربوطه فراخوانی بشه ، یعنی بدین شکل:

 http://website.com/admin/allPosts
 http://website.com/admin/editPost
 http://website.com/admin/allUsers
 http://website.com/admin/editComment

 

0 0
باید در AdminController پارامتر های ورودی رو بخونی و با قرار دادن شرط کلاس مربوطه رو صدا کنید و خروجیش رو چاپ کنید . (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .