رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تفاوت های کیک 2 و 3 و ویژگی های نسخه جدید
#1
با سلام
این تاپیک را شروع کردم تا یک سری تفاوت ها را بنویسم همچنین یک سری قابلیت های نسخه 3 را فارق از این که نسخه 2 آن را دارد یا نه را ممکنه بنویسم
موارد ذکر شده ترتیب خواصی ندارد و ممکنه هر از گاهی پست جدیدی در ادامه این مطلب درج شود

-در کیک 2 شما مجبور بودید کل پروژه را دانلود و نصب کنید هسته و قسمت کاری با هم دانلود میشد و برای آپدیت هسته مجبور به آپدیت دستی آن بودید (هرچند جدیدا composer به نسخه 2 اضافه شده )
در کیک 3 شما هسته و دیگر پلاگین ها را با استفاده از composer آپدیت و مدیریت میکنید
آموزش مختصری در http://forum.cakephp.ir/thread-1592-post-8789.html خدمت شما بیان شده

-برای vendor ها شما دیگر لازم نیست به صورت دستی نصب کنید کافی است با composer آن را نصب و آپدیت کنید

-بعد از اضافه شدن namespace ها به نسخه جدید راحت تر یتوانید کد نویسی کنید و استفاده از پلاگین های کمکی هم به لطف namespace خیلی راحت شده
به عنوان مثال
کد پی‌اچ‌پی:
$obj=new \path\to\anyclass();

$obj->method(); 

دیگه نیازی به لود توسط شما هم نیست composer و autoloader خودش تمام کار ها را انجام میده

- تغییر دیگه توی پوشه بندی کیک هست
lib تبدیل شده به vendor
پوشه app دیگه وجود نداره
app شما در واقع پوشه اصلی (root) شماست
پلاگین ها هم اکثرا در vendor قرار میگیره که باز هم توسط composer نصب میشه
یک سری پلاگین ها که با composer قابلیت نصب نداره یا توسط خود شما نوشته میشه توی پوشه plugins قرار میگیره
دیگه خبری از دو پوشه برای پلاگین ها مثل cake 2 نیست همه پلاگین های نوشته شده توسط شما در plugins قرار میگیره
قالب های شما هم در plugins قرار میگیره و یگه توی پوشه themed نیست

پوشه logs برای log ها
پوشه tmp برای فایل های موقت مثل cache یا session , ....
پوشه bin هم در روت هست که میتوانید از طریق خط فرمان با دستورات cli کارهای مفاوتی انجام بدید مثل ساخت اتومات model,...
کد پی‌اچ‌پی:
bin/cake bake model Articles 

تنظیمات در config قرار گرفته
فایل های asset مثل css و js هم در پوشه webroot توی ریشه قرار میگیره

-از همه مهمتر قسمت برنامه(app ) که بالا درمورد پوشه هایش گفته شد با قسمت core جدا شده و مستقلا میتوان آپدیت کرد

-فایل composer.json برای مدیریت هسته و vendor های مختلف که متوانید مشخص کنید چه نسخه از هسته نصب شود یا چه نسخه از دیگر vendor ها و پلاگین ها را میخواهید نصب یا آپدیت کنید

اگر استقبال شود دوباره مطلب در این مورد قرار خواهد گرفت
پاسخ
سپاس شده توسط payamsp ، gha3m
#2
سلام
کمی هم در مورد router صحبت کنیم
مسیر تنظیم route ها از app/Config/routes.php به config/routes.php تغییر کرده
به جای Router::connect از از شی استفاده میشود
کد پی‌اچ‌پی:
$routes->connect('/pages/*', ['controller' => 'Pages''action' => 'display']); 

برای تعریف prefix دیگر نیازی به
کد پی‌اچ‌پی:
Configure::write('Routing.prefixes', array('admin''manager')); 
نیست
نیازی به true کردن آن هم نیست مثل
کد پی‌اچ‌پی:
Router::connect(

   '/admin',
   array('controller' => 'pages''action' => 'index''admin' => true)
); 

این کار به صورت خیلی ساده صورت میگیرد
کد پی‌اچ‌پی:
Router::prefix('admin', function ($routes) {

 $routes->connect('/pages/*', ['controller' => 'Pages''action' => 'display']);
$routes->fallbacks(DashedRoute::class);
}); 
یا اگر connect ای نیاز نداشتید
کد پی‌اچ‌پی:
Router::prefix('admin', function ($routes) {


$routes->fallbacks(DashedRoute::class);
}); 

در ساختار کنترل ها هم تغییری برای این منظور صورت گرفته که مشکلات گذشته را حل میکند
در نسخه 2 اگر میخواستید پیشوندی تعریف کنید باید در یک کنترل این کار را میکردید
به عنوان مثال اگر میخواستید به این آدرس (/admin/users/edit/5) دسترسی داشته باشید مجبور بودید در
کنترل users علاوه بر اکشن های کاربر اکشن دیگری به نام admin_edit داشته باشد که خود این باعث به هم ریختگی و سردرگمی میشد و اکشن های کاربر و مدیر در یک جا قرار میگرفت

اما در نسخه 3 کنترل مدیر (پیشوند) و بقیه جدا شده
کافیست برای این منظور پوشه ای به نام Admin کنترل درست کنید و تمام کنترل های admin را در این پوشه قرار بدید
نام اکشن هم دیگر admin_edit  نیست و فقط edit

همچنین پوشه ی قالب برای پیشوند هم از قالب های اصلی جدا شده
و تمام قالب های admin در پوشه Admin قرار میگیرد
کد پی‌اچ‌پی:
Admin|

    |->Users
           
|->index.ctp
           
|->edit.ctp  
Users 

     |->index.ctp
     
|->edit.ctp 


میتوانید route ها را گروه بندی کنید
کد پی‌اچ‌پی:
Router::scope('/api', ['controller' => 'Pages'],function (RouteBuilder $routes) {


   $routes->connect('/', [ 'action' => 'display''home']);

   $routes->connect('/pages/*', [ 'action' => 'display']); 

در این مثال ما مقدار کنترل ها برای هر دو connect تعیین کردیم مقدار api را هم به اول آدرس ها اضافه کردیم

روتر های Named دیگر استفاده نمیشود و deprecate شده است
کد پی‌اچ‌پی:
/posts/view/title:first 
دیگر استفاده نمیشود


برای به دست آوردن مقادیر (پارامتر ) ها به جای
کد پی‌اچ‌پی:
$this->request->params 
از
کد پی‌اچ‌پی:
$this->request->getParam() 
استفاده میشود

امکان اضافه کردن Middleware به cake 3 و همین طور به قسمت روتر وجود دارد

متد های زیر در کیک 3 اضافه شده است
  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • OPTIONS
  • HEAD
بنابراین به جای تعریف

کد پی‌اچ‌پی:
Router::connect(

   "/update/:id",
   array('controller' => 'Pages',"action" => "update""[method]" => "PUT"),
   array("id" => "[0-9]+")
); 
در نسخه 2 این بار میتوانید به شکل زیر در نسخه 3 تعریف کنید
کد پی‌اچ‌پی:
$routes->put(

   "/update/:id",
   ['controller' => 'Pages',"action" => "update"],
   ['id' => '[0-9]+','pass' => ['id']]
); 

فکر میکنم توضیحات در مورد روتر کافی باشه
پاسخ
سپاس شده توسط payamsp ، gha3m
#3
یک نمونه از کنترل های admin 
که در مسیر   src/Controller/Admin/ArticlesController.php
قرار گرفته است
کد پی‌اچ‌پی:
<?php

namespace App\Controller\Admin;
use 
App\Controller\AppController;


class 
ArticlesController extends AppController
{

   public function index()
     
       
//
   }
   

   public 
function add()
   {
       //
   }
   
       public 
function edit($id null)
   {
       //
   }
      public function delete($id null)
   {
     //
   }

پاسخ
سپاس شده توسط
#4
ممنون saeid عزیز لطفا تاپیک را ادامه بدید خیلی مفید خواهد بود. بنده به شخصه دنبال فرصت کافی هستم برای کوچ کردن به نسخه 3 و به مرور با مطالعه تفاوت ها و مزیت های اضافه شده راحتر میتونم این کار رو انجام بدم. 

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

آدرس گروه:
https://t.me/joinchat/BQDybEQbR8D6Rzj3hwFvBg
پاسخ
سپاس شده توسط
#5
بله حتما
پیشنهاد میشود هر چه سریع تر کوچ کنید چون آخرین نسخه 2.10 هست و فقط bugfix ارائه میشود و امکانات هم در حد جزئي

در پست بعدی در مورد یکی از m v c ها صحبت میکنیم و مواردی که در این مورد اضافه شده

هر چند روز یک مطلب قرار میگیرد
پاسخ
سپاس شده توسط gha3m
#6
با سلام مجدد. لطفا در مورد تفاوت تعریف مدل که در کیک نسخه 2 با 3 کلی فرق دارن توضیح جامع و در صورت امکان همراه با مثال بگید بنده شخصا سر این قسمت گیرم. 

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

آدرس گروه:
https://t.me/joinchat/BQDybEQbR8D6Rzj3hwFvBg
پاسخ
سپاس شده توسط
#7
نقل قول:با سلام مجدد. لطفا در مورد تفاوت تعریف مدل که در کیک نسخه 2 با 3 کلی فرق دارن توضیح جامع و در صورت امکان همراه با مثال بگید بنده شخصا سر این قسمت گیرم. 

 سلام
مطلبی در این مورد در http://forum.cakephp.ir/thread-1614-post-8844.html قرار داده شد

برای پراکنده نشدن مطالب , model  در تاپیک جدید قرار داده شد
پاسخ
سپاس شده توسط gha3m


پرش به انجمن:


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