Thứ Hai, 30 tháng 7, 2018

PHP - Yêu cầu & phản hồi

Lập trình PHP Yêu cầu HTTP và phản hồi HTTP đóng một vai trò quan trọng trong bất kỳ ứng dụng web nào. Chúng tôi cần có được các chi tiết đầy đủ về yêu cầu http để xử lý nó đúng cách. Sau khi xử lý, chúng tôi cần gửi dữ liệu đã xử lý cho khách hàng thông qua phản hồi http.

PHP cung cấp lớp Yêu cầu và Phản hồi xuất sắc để đọc và viết yêu cầu HTTP và phản hồi HTTP tương ứng. Hãy để chúng tôi tìm hiểu về cả lớp Yêu cầu và Phản hồi trong chương này.

Yêu cầu

Trong một ứng dụng web điển hình, ứng dụng cần phân tích các chi tiết của yêu cầu hiện tại. Lớp yêu cầu cung cấp các phương thức đơn giản để phân tích cú pháp yêu cầu hiện tại sẽ được ứng dụng xử lý. Yêu cầu cũng cung cấp tùy chọn để tạo yêu cầu mới bằng cách hoạt động như một ứng dụng khách http.

Việc tạo một yêu cầu mới cho phép ứng dụng yêu cầu một phần khác của ứng dụng hoặc hoàn toàn một ứng dụng khác và hiển thị kết quả. Chúng ta hãy tìm hiểu cách phân tích cú pháp yêu cầu đến trong chương này và tìm hiểu cách tạo một yêu cầu mới trong chương Yêu cầu HMVC.

Phân tích cú pháp một yêu cầu

Lớp yêu cầu cung cấp ba phương thức để có được các chi tiết của yêu cầu http. Chúng như sau,

active - Đây là một phương thức tĩnh, trả về yêu cầu http đang hoạt động hiện tại.
$currentRequest = Request::active();
param - Nó trả về giá trị của tham số được chỉ định. Nó chứa hai đối số. Đối số đầu tiên là tên tham số và đối số thứ hai là giá trị trả về, nếu tham số không có sẵn trong yêu cầu http hiện tại.
$param = Request::active()->param('employee_name', 'none');


params - Nó giống như param ngoại trừ nó trả về tất cả các tham số như một mảng.$params = Request::active()->params();

Thí dụ

Chúng ta hãy tạo một biểu mẫu đơn giản và xử lý biểu mẫu bằng cách sử dụng lớp yêu cầu.

Bước 1 - Tạo một hành động mới, action_request trong bộ điều khiển nhân viên.
public function action_request() { 
}


public function action_request() { 
   $params = Request::active()->params(); 
}


public function action_request() { 
   $params = Request::active()->params();  
   echo dump($params); 
}
Bước 4 - Thay đổi định tuyến để bao gồm các tham số trong tệp cấu hình tuyến đường, nhiên liệu / app / config / routes.php
'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),
Bây giờ, yêu cầu hành động mới, http: // localhost: 8080 / employee / request / Jon, nó sẽ hiển thị phản hồi sau.

ảnh minh họa PHP

Phản ứng

Lớp phản hồi cung cấp các tùy chọn để tạo ra một phản hồi http. Theo mặc định, chúng tôi không cần sử dụng lớp phản hồi trực tiếp trong hầu hết các trường hợp. Thay vào đó, chúng ta sử dụng View (mà chúng ta sẽ tìm hiểu trong chương tiếp theo) để tạo ra phản hồi http. Xem ẩn phản hồi http từ nhà phát triển và gửi phản hồi cho khách hàng bằng cách sử dụng lớp Responsebên dưới . Trong trường hợp nâng cao, chúng tôi sử dụng lớp Phản hồi trực tiếp và tạo một phản hồi http hoàn chỉnh.

Tạo phản hồi

Phản hồi bao gồm tiêu đề và nội dung. Tiêu đề chính là mã trạng thái http. Mã trạng thái Http là các mã tiêu chuẩn được định nghĩa trong giao thức HTTP để mô tả phản hồi. Ví dụ: mã trạng thái, 200 nghĩa là yêu cầu thành công.

Lớp đáp ứng cung cấp ba đối số để tạo phản hồi http,

$ body - body của câu trả lời http

$ status_code - mã trạng thái của phản hồi http

$ headers - tiêu đề tùy chọn dưới dạng mảng
$body = "Hi, FuelPHP"; 
$headers = array ( 
   'Content-Type' => 'text/html', 
); 
$response = new Response($body, 200, $headers);


   $body = "Hi, FuelPHP"; 
   $headers = array ('Content-Type' => 'text/html',); 
   $response = new Response($body, 200, $headers); 
   
   return $response; 
}

Kết quả

ảnh minh họa PHP

Phương pháp

Lớp đáp ứng cung cấp rất nhiều phương thức để thao tác các câu trả lời http. Chúng như sau,

giả mạo - Nó giống như hàm tạo lớp phản hồi như đã thấy ở trên.
return Response::forge("Hi, FuelPHP", 404);
chuyển hướng - Nó cung cấp tùy chọn để chuyển hướng đến một URL thay vì gửi một phản hồi. Nó chứa các đối số sau,

a.url - url đích b. phương pháp - phương pháp chuyển hướng. vị trí (mặc định) và làm mới c . redirect_code - mã trạng thái http. Giá trị mặc định là 302.
// use a URL 
Response::redirect('http://some-domain/index', 'refresh');  

// or use a relative URI 
Response::redirect('employee/list'); 

Response::redirect_back('/employee/list', 'refresh');

$response->set_status(404); 

$response->set_header('Content-Type', 'application/pdf');  

// replace previous value using third arguments 
$response->set_header('Content-Type', 'application/pdf', 'text/plain'); 
set_headers - Nó giống như set_header ngoại trừ nó cung cấp một tùy chọn để đặt nhiều tiêu đề bằng mảng.
$response = new Response(); 
$response->set_headers (array 
   'Content-Type' => 'application/pdf', 
   'Pragma' => 'no-cache', 
)); 
get_header - Nó cho phép để có được các chi tiết tiêu đề thiết lập trước đó.
$response = new Response(); 
$response->set_header('Pragma', 'no-cache');  

// returns 'no-cache' 
$header = $response->get_header('Pragma');  

// returns array('Pragma' => 'no-cache') 
$header = $response->get_header();
body - Nó cung cấp một tùy chọn để thiết lập phần thân của câu trả lời http.
$response = new Response(); 
$response->body('Hi, FuelPHP');  

// returns 'Hi, FuelPHP' 
$body = $response->body();
send_headers - Nó gửi các tiêu đề đến máy khách được yêu cầu. PHP sử dụng phương pháp này để gửi phản hồi cho khách hàng. Thông thường, chúng ta không cần sử dụng phương pháp này.
$response->send_headers();
gửi - Giống như send_headers ngoại trừ tiêu đề có thể bị hạn chế trong phản hồi http.
// send the headers as well 
$response->send(true);  

// only send the body 
$response->send(false); 
$response->send(); 

Thứ Năm, 26 tháng 7, 2018

PHP - Định tuyến

Trong lập trình PHP. Các bản đồ định tuyến yêu cầu một URI đến một phương thức của bộ điều khiển cụ thể. Trong chương này, chúng ta sẽ thảo luận chi tiết về định tuyến trong PHP một cách chi tiết.

Cấu hình

Tệp cấu hình tuyến đường được đặt tại fuel / app / config / routes.php . Tệp routes.php mặc định được định nghĩa như sau:
<?php 
   return array ( 
      '_root_'  => 'welcome/index',   // The default route 
      '_404_'   => 'welcome/404',     // The main 404 route 
      'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'), 
   );
Ở đây, _root_ là tuyến mặc định được xác định trước, sẽ được khớp khi ứng dụng được yêu cầu với đường dẫn gốc, / ví dụ http: // localhost: 8080 / . Giá trị của _root_ là bộ điều khiển và hành động được giải quyết khi nó được khớp. chào mừng / index giải quyết cho Controller_Welcome controller và action_index action method. Tương tự, chúng tôi có các tuyến đường dành riêng sau đây.

root - Tuyến mặc định khi không có URI nào được chỉ định.

403 - Nó ném khi tìm thấy HttpNoAccessException.

404 - Nó trả về khi không tìm thấy trang.

500 - Nó ném khi HttpServerErrorException được tìm thấy.

Định tuyến đơn giản

Tuyến đường được so sánh với URI yêu cầu. Nếu tìm thấy kết quả phù hợp, yêu cầu sẽ được chuyển đến URI. Định tuyến đơn giản được mô tả như sau,
return array ( 
   'about'  => 'site/about', 
   'login' => 'employee/login', 
);
Ở đây, về các kết quả phù hợp http: // localhost: 8080 / about và giải quyết bộ điều khiển, Controller_Site và phương thức hành động, action_about

đăng nhập phù hợp http: // localhost: 8080 / đăng nhập và giải quyết bộ điều khiển, Controller_Login và phương thức hành động, action_login

Định tuyến nâng cao

Bạn có thể bao gồm bất kỳ regex nào vào tuyến đường của mình. Nhiên liệu hỗ trợ các tính năng định tuyến nâng cao sau:

: any - Điều này khớp với bất kỳ thứ gì từ thời điểm đó trên URI, không khớp với "không có gì"

: tất cả mọi thứ - Giống như: bất kỳ, nhưng cũng phù hợp với "không có gì"

: phân khúc - Chỉ khớp với 1 phân đoạn trong URI, nhưng phân đoạn đó có thể là bất kỳ thứ gì

: num - Số này khớp với bất kỳ số nào

: alpha - Điều này khớp với bất kỳ ký tự alpha nào, bao gồm cả UTF-8

: alnum - Điều này khớp với bất kỳ ký tự chữ và số nào, bao gồm cả UTF-8

Ví dụ: tuyến đường sau khớp với URI http: // localhost: 8080 / hello / PHP và xử lý bộ điều khiển, Controller_Welcome và action action_hello
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
Phương thức hành động tương ứng trong Controller_Welcome như sau,
public function action_hello() { 
   $this->name = Request::active()->param('name', 'World'); 
   $message = "Hello, " . $this->name;  
   echo $message; 
}
Ở đây, chúng tôi đã sử dụng lớp Yêu cầu để lấy tham số tên từ URL. Nếu không tìm thấy tên, thì chúng ta đang sử dụng World làm giá trị mặc định. Chúng ta sẽ học lớp Request trong chương Request and Response .

Kết quả
học PHP
ảnh minh họa

Hành động phương thức HTTP

PHP hỗ trợ các tuyến đường để phù hợp với các hành động tiền tố phương thức HTTP. Sau đây là cú pháp cơ bản.
class Controller_Employee extends Controller { 
   public function get_index() { 
      // called when the HTTP method is GET. 
   }  
   public function post_index(){ 
      // called when the HTTP method is POST. 
   } 
}
Chúng tôi có thể định tuyến các URL của bạn tới các bộ điều khiển và hành động dựa trên động từ HTTP trong tệp cấu hình như sau.
return array ( 
   // Routes GET /employee to /employee/all and POST /employee to /employee/create 
   employee => array(array('GET', new Route(‘employee/all')), array('POST', 
      new Route(‘employee/create'))), 
);

Thứ Ba, 24 tháng 7, 2018

PHP - Bộ điều khiển

Bộ điều khiển chịu trách nhiệm xử lý từng yêu cầu đi vào ứng dụng PHP. Theo PHP, bộ điều khiển được đặt tại nhiên liệu / ứng dụng / lớp / bộ điều khiển / . Đầu tiên hãy tạo một Controller nhân viên.
employee.php
<?php  
   class Controller_Employee extends Controller { 
      public function action_home() { 
         echo "FuelPHP-Employee application!"; 
      }  
      
      public function action_index() { 
         echo "This is the index method of employee controller"; 
      } 
   } 

Phương pháp điều khiển

Bộ điều khiển xử lý yêu cầu web bằng cách sử dụng một trong các phương thức hành động _ của nó . Chúng ta có thể tạo ra nhiều phương thức action_tùy thuộc vào yêu cầu của ứng dụng. Phương thức action_ mặc định là action_index . Phương thức action_index có thể được gọi bởi bất kỳ một trong các URL sau đây.

http://localhost:8080/employee/index
http://localhost:8080/employee/

Kết quả

ảnh minh họa

Chúng ta hãy tạo một phương thức hành động mới , action_show trong ứng dụng nhân viên của chúng ta .
<?php  
   class Controller_Employee extends Controller { 
      public function action_home() { 
         echo "FuelPHP-Employee application!"; 
      }  
      public function action_index() { 
         echo "This is the index method of employee controller"; 
      }  
      public function action_show() { 
         echo "This is the show method of employee controller"; 
      } 
   } 
Phương thức action_show có thể được gọi bằng cách sử dụng URL sau.
http://localhost:8080/home/show

Kết quả

học php
ảnh minh học

before () Phương thức

Chúng tôi có thể tạo ra một phương pháp, trước khi trong bộ điều khiển của chúng tôi. Phương thức này sẽ được thực thi trước mỗi lời gọi phương thức action_ . 

Nó sẽ không được gọi nếu phương pháp đó hóa ra không tồn tại. Phương pháp này giúp chúng tôi viết các hành động phổ biến như kiểm tra đăng nhập, tìm nạp dữ liệu mặc định, v.v.

Hãy để chúng tôi tạo ra một phương pháp trước và in một tin nhắn văn bản đơn giản.
public function before() { 
   echo "This message comes from <em>before()</em> method</br>"; 
} 
Trang chỉ mục có trước hành động

ảnh minh họa
Hiển thị trang có trước hành động

học php
ảnh minh họa
phương thức after ()

phương thức after () tương tự như phương thức before () nhưng được thực hiện sau khi phương thức action_ được gọi. phương thức after () nhận phản hồi như một đầu vào và trả về đối tượng phản hồi .
public function after($response) { 
   if ( ! $response instanceof Response) { 
      $response = \Response::forge($response, $this->response_status); 
   } 
   return $response; 
} 

Nếu đầu vào là NULL hoặc không phải đối tượng phản hồi, sau đó tạo một đối tượng Response mới bằng cách sử dụng phương thức forge của Response và trả về nó.

a sẽ học chi tiết về lớp Phản hồi trong các chương tiếp theo.

Bộ điều khiển mở rộng

Chúng tôi có thể mở rộng một bộ điều khiển từ bộ điều khiển khác. Sau đây là cú pháp cơ bản.
class Controller_Employee extends Controller_Welcome { 
   // controller methods 
} 
Điều này sẽ giúp chia sẻ các phương pháp.

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

Nhiên liệu có tùy chọn tạo bộ điều khiển bằng lệnh Dầu. Sau đây là cú pháp.

Cú pháp

oil g controller <controller-name> 

Thí dụ

oil g controller sample

Sau khi thực hiện lệnh trên, bạn sẽ thấy phản hồi sau.

Kết quả

Creating view: /path/to/project/fuel/app/views/template.php 
Creating view: /path/to/project/fuel/app/views/sample/index.php 
Creating controller: /path/to/project/fuel/app/classes/controller/sample.php 

Loại bộ điều khiển

PHP cung cấp loại bộ điều khiển khác nhau cho nhiều mục đích khác nhau. Chúng như sau:

Bộ điều khiển cơ sở

Trình điều khiển mẫu

Bộ điều khiển còn lại

Bộ điều khiển lai

Bộ điều khiển cơ sở

Controller là bộ điều khiển cơ sở cho tất cả các loại bộ điều khiển khác nhau có sẵn trong PHP. Nó cung cấp tất cả các chức năng cơ bản cần thiết để xử lý yêu cầu web. Nó hỗ trợ Yêu cầu, Phản hồi, Phiên, v.v. Chúng tôi sẽ sử dụng nó trong tất cả các ví dụ trừ khi có quy định khác.

Trình điều khiển mẫu

Bộ điều khiển mẫu là phần mở rộng của bộ điều khiển cơ sở. Nó có hỗ trợ mẫu, các phương thức before () và after () đã định nghĩa trước. 

Về cơ bản, nó có thể được sử dụng để bọc khung nhìn của bạn trong một bố trí với đầu trang, chân trang, thanh bên, vv Để tạo một bộ điều khiển mẫu, chúng ta cần mở rộng lớp Controller_Template . Theo mặc định, tất cả các phương thức của một lớp mở rộng Controller_Template cần phải sử dụng mẫu.

Nó được định nghĩa như sau.
class Controller_Employee extends Controller_Template { 
   public function action_index() { 
      // add methods 
   } 
}
Chúng ta sẽ thảo luận thêm về bộ điều khiển mẫu trong chương Views.

Bộ điều khiển còn lại

Bộ điều khiển còn lại là phần mở rộng của Bộ điều khiển cơ sở. Nó có hỗ trợ được xác định trước cho lập trình PHP REST API. Điều này sẽ cho phép bạn xây dựng các API một cách dễ dàng.

Để tạo bộ điều khiển còn lại, bạn cần mở rộng lớp Controller_Rest . Nó được định nghĩa như sau.
class Controller_Employee extends Controller_Rest { 
   public function action_index() { 
      // add methods 
   } 
}
Chúng ta sẽ thảo luận thêm về bộ điều khiển còn lại trong chương Ajax.

Bộ điều khiển lai

Bộ điều khiển lai thực hiện chức năng của cả bộ điều khiển REST và bộ điều khiển Mẫu trong một bộ điều khiển cơ sở duy nhất.

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...