Laravel - Namespaces

Không gian tên có thể được định nghĩa là một lớp các phần tử trong đó mỗi phần tử có một tên duy nhất cho lớp liên kết đó. Nó có thể được chia sẻ với các phần tử trong các lớp khác.

Khai báo không gian tên

Các sử dụng từ khóa cho phép các nhà phát triển để rút ngắn namespace.

use <namespace-name>;

Không gian tên mặc định được sử dụng trong Laravel là Ứng dụng, tuy nhiên người dùng có thể thay đổi không gian tên để phù hợp với ứng dụng web. Việc tạo không gian tên do người dùng xác định bằng lệnh thủ công được đề cập như sau:

php artisan app:name SocialNet
Khai báo không gian tên

Không gian tên sau khi được tạo có thể bao gồm các chức năng khác nhau có thể được sử dụng trong bộ điều khiển và các lớp khác nhau

Laravel – Controllers Bộ điều khiển

Trong khuôn khổ MVC, chữ ‘C’ là viết tắt của Controller. Nó hoạt động như một lưu lượng truy cập trực tiếp giữa Chế độ xem và Mô hình. Trong chương này, bạn sẽ tìm hiểu về Bộ điều khiển trong Laravel.

Tạo bộ điều khiển

Mở dấu nhắc lệnh hoặc thiết bị đầu cuối dựa trên hệ điều hành bạn đang sử dụng và nhập lệnh sau để tạo bộ điều khiển bằng Artisan CLI (Giao diện dòng lệnh).

php artisan make:controller <controller-name> --plain

Thay thế <controller-name> bằng tên của bộ điều khiển của bạn. Điều này sẽ tạo ra một phương thức khởi tạo đơn giản khi chúng ta truyền đối số – đơn giản . Nếu bạn không muốn tạo một phương thức khởi tạo đơn giản, bạn có thể chỉ cần bỏ qua đối số. Hàm tạo đã tạo có thể được nhìn thấy tại app / Http / Controllers .

Bạn sẽ thấy rằng một số mã hóa cơ bản đã được thực hiện cho bạn và bạn có thể thêm mã hóa tùy chỉnh của mình. Bộ điều khiển đã tạo có thể được gọi từ route.php theo cú pháp sau.

Cú pháp

Route::get(‘base URI’,’controller@method’);

Thí dụ

Bước 1 – Thực hiện lệnh sau để tạo UserController .

php artisan make:controller UserController --plain

Bước 2 – Sau khi thực hiện thành công, bạn sẽ nhận được kết quả như sau

UserController

Bước 3 – Bạn có thể xem bộ điều khiển đã tạo tại app / Http / Controller / UserController.php với một số mã cơ bản đã được viết sẵn cho bạn và bạn có thể thêm mã của riêng mình dựa trên nhu cầu của bạn.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   //
}

Phần mềm trung gian điều khiển

Chúng tôi đã thấy phần mềm trung gian trước đây và nó cũng có thể được sử dụng với bộ điều khiển. Phần mềm trung gian cũng có thể được gán cho tuyến đường của bộ điều khiển hoặc bên trong phương thức khởi tạo của bộ điều khiển của bạn. Bạn có thể sử dụng phương pháp phần mềm trung gian để gán phần mềm trung gian cho bộ điều khiển. Phần mềm trung gian đã đăng ký cũng có thể bị hạn chế đối với một số phương pháp nhất định của bộ điều khiển.

Gán phần mềm trung gian cho tuyến đường

Route::get('profile', [
   'middleware' => 'auth',
   'uses' => 'UserController@showProfile'
]);

Ở đây chúng tôi đang gán phần mềm trung gian auth cho UserController trong tuyến hồ sơ.

Gán phần mềm trung gian trong hàm tạo của Bộ điều khiển

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   public function __construct() {
      $this->middleware('auth');
   }
}

Ở đây chúng ta đang gán phần mềm trung gian auth bằng cách sử dụng phương thức phần mềm trung gian trong phương thức khởi tạo UserController .

Thí dụ

Bước 1 – Thêm các dòng mã sau vào tệp app / Http / route.php và lưu nó.route.php

<?php
Route::get('/usercontroller/path',[
   'middleware' => 'First',
   'uses' => 'UserController@showPath'
]);

Bước 2 – Tạo một phần mềm trung gian gọi là FirstMiddleware bằng cách thực thi dòng mã sau.

php artisan make:middleware FirstMiddleware

Bước 3 – Thêm mã sau vào phương thức xử lý của FirstMiddleware mới được tạo tại app / Http / Middleware .

FirstMiddleware.php

<?php

namespace App\Http\Middleware;
use Closure;

class FirstMiddleware {
   public function handle($request, Closure $next) {
      echo '<br>First Middleware';
      return $next($request);
   }
}

Bước 4 – Tạo một phần mềm trung gian có tên là SecondMiddleware bằng cách thực hiện lệnh sau.

php artisan make:middleware SecondMiddleware

Bước 5 – Thêm mã sau vào phương thức xử lý của SecondMiddleware mới được tạo tại app / Http / Middleware .SecondMiddleware.php

<?php

namespace App\Http\Middleware;
use Closure;

class SecondMiddleware {
   public function handle($request, Closure $next) {
      echo '<br>Second Middleware';
      return $next($request);
   }
}

Bước 6 – Tạo một bộ điều khiển có tên là UserController bằng cách thực hiện dòng sau.

php artisan make:controller UserController --plain

Bước 7 – Sau khi thực hiện thành công URL, bạn sẽ nhận được kết quả sau:

UserControlle

Bước 8 – Sao chép mã sau vào tệp app / Http / UserController.php .

app / Http / UserController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller {
   public function __construct() {
      $this->middleware('Second');
   }
   public function showPath(Request $request) {
      $uri = $request->path();
      echo '<br>URI: '.$uri;
      
      $url = $request->url();
      echo '<br>';
      
      echo 'URL: '.$url;
      $method = $request->method();
      echo '<br>';
      
      echo 'Method: '.$method;
   }
}

Bước 9 – Bây giờ khởi chạy máy chủ web nội bộ của php bằng cách thực hiện lệnh sau, nếu bạn chưa thực thi.

php artisan serve

Bước 10 – Truy cập URL sau.

http://localhost:8000/usercontroller/path

Bước 11 – Đầu ra sẽ xuất hiện như trong hình sau.

máy chủ web

Bộ điều khiển tài nguyên khôi phục

Thông thường, trong khi tạo một ứng dụng, chúng ta cần thực hiện các thao tác CRUD (Tạo, Đọc, Cập nhật, Xóa) . Laravel làm cho công việc này trở nên dễ dàng đối với chúng tôi. Chỉ cần tạo một bộ điều khiển và Laravel sẽ tự động cung cấp tất cả các phương thức cho các hoạt động CRUD. Bạn cũng có thể đăng ký một tuyến duy nhất cho tất cả các phương thức trong tệp route.php.

Thí dụ

Bước 1 – Tạo một bộ điều khiển có tên MyController bằng cách thực hiện lệnh sau.

php artisan make:controller MyController

Bước 2 – Thêm mã sau vào

tệp app / Http / Controllers / MyController.php .

app / Http / Controllers / MyController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class MyController extends Controller {
   public function index() {
      echo 'index';
   }
   public function create() {
      echo 'create';
   }
   public function store(Request $request) {
      echo 'store';
   }
   public function show($id) {
      echo 'show';
   }
   public function edit($id) {
      echo 'edit';
   }
   public function update(Request $request, $id) {
      echo 'update';
   }
   public function destroy($id) {
      echo 'destroy';
   }
}

Bước 3 – Thêm dòng mã sau vào tệp app / Http / route.php .

app / Http / route.php

Route::resource('my','MyController');

Bước 4 – Bây giờ chúng tôi đang đăng ký tất cả các phương thức của MyController bằng cách đăng ký một bộ điều khiển với tài nguyên. Dưới đây là bảng các hành động được xử lý bởi bộ điều khiển tài nguyên.

Động từCon đườngHoạt độngTên tuyến đường
ĐƯỢC/ mymục lụcmy.index
ĐƯỢC/ my / createtạo nênmy.create
BÀI ĐĂNG/ mycửa hàngmy.store
ĐƯỢC/tôi của tôi}chỉChương trình của tôi
ĐƯỢC/ my / {my} / editbiên tậpmy.edit
PUT / PATCH/tôi của tôi}cập nhậtmy.update
XÓA BỎ/tôi của tôi}hủy hoạimy.destroy

Bước 5 – Thử thực hiện các URL được hiển thị trong bảng sau.

URLSự miêu tảHình ảnh đầu ra
http: // localhost: 8000 / myThực thi phương thức chỉ mục của MyController.phpmục lục
http: // localhost: 8000 / my / createThực thi phương thức tạo MyController.phptạo nên
http: // localhost: 8000 / my / 1Thực thi hiển thị phương thức của MyController.phpchỉ
http: // localhost: 8000 / my / 1 / editThực thi phương thức chỉnh sửa của MyController.phpbiên tập

Bộ điều khiển ngầm định

Bộ điều khiển ngầm định cho phép bạn xác định một tuyến đường duy nhất để xử lý mọi hành động trong bộ điều khiển. Bạn có thể định nghĩa nó trong tệp route.php với phương thức Route: controller như hình dưới đây.

Route::controller(‘base URI’,’<class-name-of-the-controller>’);

Thay thế <class-name-of-the-controller> bằng tên lớp mà bạn đã đặt cho bộ điều khiển của mình.

Tên phương thức của bộ điều khiển phải bắt đầu bằng động từ HTTP như get hoặc post. Nếu bạn bắt đầu nó với get, nó sẽ chỉ xử lý yêu cầu nhận được và nếu nó bắt đầu với post thì nó sẽ xử lý yêu cầu đăng. Sau động từ HTTP, bạn có thể đặt bất kỳ tên nào cho phương thức nhưng nó phải tuân theo phiên bản trường hợp tiêu đề của URI.

Thí dụ

Bước 1 – Thực hiện lệnh dưới đây để tạo bộ điều khiển. Chúng tôi đã giữ tên lớp ImplicitController . Bạn có thể đặt bất kỳ tên nào bạn chọn cho lớp.

php artisan make:controller ImplicitController --plain

Bước 2 – Sau khi thực hiện thành công bước 1, bạn sẽ nhận được kết quả sau:

make:controller

Bước 3 – Sao chép mã sau vào

tệp app / Http / Controllers / ImplicitController.php .app / Http / Controllers / ImplicitController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ImplicitController extends Controller {
   /**
      * Responds to requests to GET /test
   */
   public function getIndex() {
      echo 'index method';
   }
   
   /**
      * Responds to requests to GET /test/show/1
   */
   public function getShow($id) {
      echo 'show method';
   }
   
   /**
      * Responds to requests to GET /test/admin-profile
   */
   public function getAdminProfile() {
      echo 'admin profile method';
   }
   
   /**
      * Responds to requests to POST /test/profile
   */
   public function postProfile() {
      echo 'profile method';
   }
}

Bước 4 – Thêm dòng sau vào tệp app / Http / lines.php để định tuyến các yêu cầu đến bộ điều khiển được chỉ định.

app / Http / route.php

Route::controller('test','ImplicitController');

Constructor Injection

Vùng chứa dịch vụ Laravel được sử dụng để giải quyết tất cả các bộ điều khiển Laravel. Do đó, bạn có thể gõ gợi ý bất kỳ phụ thuộc nào mà bộ điều khiển của bạn có thể cần trong phương thức khởi tạo của nó. Các phần phụ thuộc sẽ tự động được giải quyết và đưa vào phiên bản controller.

Thí dụ

Bước 1 – Thêm mã sau vào tệp app / Http / lines.php .

app / Http / route.php

class MyClass{
   public $foo = 'bar';
}
Route::get('/myclass','ImplicitController@index');

Bước 2 – Thêm mã sau vào

tệp app / Http / Controllers / ImplicitController.php .app / Http / Controllers / ImplicitController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ImplicitController extends Controller {
   private $myclass;
   
   public function __construct(\MyClass $myclass) {
      $this->myclass = $myclass;
   }
   public function index() {
      dd($this->myclass);
   }
}

Bước 3 – Truy cập URL sau để kiểm tra việc chèn hàm tạo.

http://localhost:8000/myclass

Bước 4 – Đầu ra sẽ xuất hiện như trong hình sau.

Đầu ra sẽ xuất hiện

Phương pháp tiêm

Ngoài việc chèn hàm tạo, bạn cũng có thể gõ – gợi ý phụ thuộc vào các phương thức hành động của bộ điều khiển của bạn.

Thí dụ

Bước 1 – Thêm mã sau vào tệp app / Http / lines.php .

app / Http / route.php

class MyClass{
   public $foo = 'bar';
}
Route::get('/myclass','ImplicitController@index');

Bước 2 – Thêm mã sau vào

tệp app / Http / Controllers / ImplicitController.php .app / Http / Controllers / ImplicitController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ImplicitController extends Controller {
   public function index(\MyClass $myclass) {
      dd($myclass);
   }
} 

Bước 3 – Truy cập URL sau để kiểm tra việc chèn hàm tạo.

http://localhost:8000/myclass

Nó sẽ tạo ra kết quả sau:

myclass

Laravel – Request Xem Thêm

Để lại một bình luận