• 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
روتر/router
#1
به نظرتون این بخش چه مشکلاتی داره و چه چیزهایی لازمه بهش اضافه کنیم؟
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط :
#2
اینی که فعلاً هست که باید زیر و رو بشه. ولی
شاید اگر لازم بشه حرفه ای تر بشه، درایور های web soap console و.. بهش اضافه بشه.
router->web
router->soap/xml
router->console
...
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#3
الان این router وجود داره که ما نظر بدیم برای ویرایش
یا کلآ نظر بدیم برای یه ساختن یه روتر؟
  پاسخ
تشکر شده توسط :
#4
وجود داره، اما از نظر بچه ها ضعیفه و باید اصلاح شه.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط :
#5
روتر ماژول ها اینگونه باشه که اشاره به کنترلر my_module و اکشن my_act از ماژول my_module داشته باشه .
mysite.ir/module/my_module/my_act/1/2/3
یه ذره ویرایش میخواد
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#6
گرفته توی کانفیگش کلی برنامه نویسی کرده Dodgy

این کنترلر های داخل کانفیگ باید برن به router یا controller.


یه request merge هم دادم. یه نگاهی بهش بکن اگر ok بود merge ش کن.
اون پوشه Includes رو که به Data تغییرش داده بودی (و پاک نشده بود) رو هم حذف کردم
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : undefined
#7
با سلام

اول باید ساختار URL رو بررسی و تعیین کنیم.

چون Router همون مسیر یابمون هست این کار هم از روی URL انجام میشه.

پس اول ساختار URL رو مشخص کنیم سپس در مورد نحوه پیاده سازی روتر بحث کنیم
  پاسخ
تشکر شده توسط : undefined
#8
سیستم اینطوریه که اسم کلاس و متد و مقدارهای ورودی متد رو میگیره و متد رو اجرا می کنه.
(کروشه یعنی اون قسمت نا محدود تکرار می شه.)
کد:
domain/controller/action[/value]

میان به آخر این URL یه پسوند(extention) قرار می دن که سوریه.
کد:
domain/controller/action[/value].ext

وقتی که نوع زبان سیستم رو هم در URL مشخص می کنن.
کد:
domain/lang/controller/action[/value].ext

وقتی که دسترسی به صفحه رو هم در این URL ها میارن
کد:
domain/access/lang/controller/action[/value].ext

وقتی که از نام برای مقدار ها استفاده می شه
کد:
domain/access/lang/controller/action[/name/value].ext

وقتی که جداکننده ها برای مقدار متفات می شه
کد:
domain/access/lang/controller/action[-value].ext

--
این قضیه مولتی application کجا باید بررسی شه. نحوه پیاده سازیش رو توی همچین سیستمی نمی دونم.
  پاسخ
تشکر شده توسط : undefined admin Y.P.Y
#9
من رابطه بین Route و Router و App رو اینطوری می بینم :

کلاس Route که طبیعطا منجر به شی Route می شود:
کد پی‌اچ‌پی:
class Route
{
    private 
$access;
    private 
$language;
    private 
$controller;
    private 
$action;
    private 
$values;
    private 
$extention;
    
    public function 
__construst(array $route)
    {}
    
    public function 
getAccess()
    {}
    
    public function 
getLanguage()
    {}
    
    public function 
getController()
    {}
    
    public function 
getAction()
    {}
    
    public function 
getValues()
    {}
    
    public function 
getExtension()
    {}
    
    public function 
Merge(Route $route)
    {}
    
    public static 
RenderPath(string $path)
    {}
    
    public static 
CreatePath(Route $route)
    {}


در این کلاس برای هر المنت(عنصر) در Request-URL ( همین: domain/controller/action/value.ext ) یک پروپرتی درنظر گرفته شده که برای نگهداری مقدار مربوطست
و به اضافه متد سازنده که مقدار های اولیه رو با استفاده از یک آرایه که می گیره ست می کنه
و متد های get که مقدار های مربوطه رو برمی گردونن
و متد ترکیب(merge) که پروپرتی ها رو با شی route جدیدی که می گیره آپدیت می کنه.
به اضافه دو متد استاتیک برای تبدیل path (همون Request-URL) به یک شی Route (متد RenderPath) و تبدیل یک شی Route به path (متد CreatePath)

کلاس App که تمام Application (کنترلر) ها از این کلاس ارث می برند : (البته این فقط بخشیه که مربوط به روترینگ می شه)
کد پی‌اچ‌پی:
class App
{
    private 
$route;
    
    public function 
Action(Route $route)
    {}
    
    public function 
ReDirect(Route $route)
    {}
    
    public function 
Data(string $mode, array $filter=null)
    {}


پروپرتی route که آبجکت route مربوط به اکشن درحال اجراست.
متد Action که یه action رو run می کنه
متد ReDirect که مسری اجرا رو به یک Action دیگه می فرسته
متد Data که داده های ورودی برای این برنامه رو برمی گردونه (get, post, path, ...)

Routering :
کد پی‌اچ‌پی:
$app = new App();
$path $app->Data('path');
if(
$path == false){
    
// use default
    
$path $defaultPath;
}

$route Route::RenderPath($path);
$app->Action($route); 

--
البته در مورد کلاس App کارم اشتباهه. چون کنترلر ها از این کلاس ارث می برند شاید درست نباشه توسط خودش صدا زده بشن.
عصر که اومدمبیشتر راجع بش فکر می کنم Big Grin
  پاسخ
تشکر شده توسط : Y.P.Y
#10
dispatcher یا request/response مون کجا جا میگیره پس؟ Dodgy
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان