اگر نیم اسپیس ها در کنترولر تغییر کند چطور کلاس هارو داینامیک فراخوانی کنیم؟

پرسیده شده
فعالیت 1069 روز پیش
دیده شده 378 بار
0

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

فایل پیوست

امیر
امیر

31 اردیبهشت 00

0
حذف شده

سلام و احترام

وقتی شما توی کامپوزر کلاسی رو جا به جا میکنید شما در واقع namespace اون رو هم باید تغییر بدید وگرنه به خطا میخورید، حتما با تغییر یک کلاس به فولدر دیگه باید namespace اون رو هم تغییر بدید به شکل دستی یا خود IDE اون رو انجام میده

فایل پیوست

امیر صالحی

توسط

امیر صالحی

1 خرداد 00

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

1 خرداد 00

حذف شده
ما برای خودمون یه قانون میزاریم، همه Controller ها باید تویه پوشه controller باشن، حالا ممکنه ما داخل پوشه controller کلی پوشه تو در تو داشته باشیم و برای ما اهمیتی نداره چون namespace پایه ای اونا همشون controller هستش. شما اگه از لاراول هم استفاده کنید میبینید که همه controller ها داخل پوشه controller ها هستن
امیر صالحی

1 خرداد 00

حذف شده
کامنتم طولانیه ببخشید بصورت پاسخ تو همین صفحه قرار میدم.
امیر

2 خرداد 00

0
حذف شده

بله منظورم همینه تو همون پوشه کنترولر پوشه های تو در تو داشته باشیم خب الان  نیم اسپیس پایه درسته برا همه کنترولرا ست میشه ولی اگه بخوایم با همون نیم اسپیس پایه به کلاس دسترسی داشته باشیم که پیدا نمیشه کلاسهامون چون نیم اسپیس ها مسیر فایل مارو نشون میدن الان مثلا کنترولر های مربوط به محصول تو پوشه محصول باشن مثلا اینجوری

namespace App\Controllers\Product

و یه کنترولر دیگم تو یه پوشه دیگه باشه و نیم اسپیسش اینجوری باشه

namespace App\Controllers\Article

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

فایل پیوست

امیر

توسط

امیر

2 خرداد 00

1
حذف شده

سلام و احترام

دو روش وجود داره

یک اینکه ما میتونیم روت ها رو اینطوری داشته باشیم:

Route::post('article/add', 'Admin\ArticleController@add');

ینی شما namespace رو هم همراه با نام کلاس پاس بدید

روش دوم

use App\Controllers\Admin\ArtilcesControllers;
Route::post('article/add', [ArtilcesControllers::class ,'add']);

روش دوم هم بیاییم به صورت آرایه هم کلاس رو پاس بدیم که از قبل namespace ش رو use کردیم و هم متد رو، هر کدوم فکر میکنید براتون جالبه رو میتونید توسعه بدید

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

4 خرداد 00