Chế độ xem trong PHP là gì?

Phiên PHP được sử dụng để lưu trữ dữ liệu trên máy chủ chứ không phải máy tính của người dùng. Số nhận dạng phiên hoặc SID là các số duy nhất được sử dụng để xác định mọi người dùng trong môi trường dựa trên phiên. SID được sử dụng để liên kết người dùng với thông tin của anh ấy trên máy chủ như bài đăng, email, v.v. Bạn có thể tìm hiểu chi tiết về session trong bài viết PHP. phiên

Ghi chú. các mẫu lấy cảm hứng từ MVC và MVC là các cấu trúc nâng cao. Chúng có nghĩa là được sử dụng trong các cơ sở mã nơi mã hướng đối tượng thông thường [tuân theo SOLID và các hướng dẫn khác] bắt đầu trở nên không thể quản lý được. Bằng cách giới thiệu mẫu này, bạn sẽ áp đặt các ràng buộc bổ sung, sau đó cho phép bạn chứa các ứng dụng rất phức tạp. MVC không dành cho các ứng dụng "xin chào thế giới"

Hãy bắt đầu từ đầu

Ý tưởng cốt lõi đằng sau MVC và các mẫu thiết kế lấy cảm hứng từ MVC là Tách biệt các mối quan tâm. Cho biết chia tay là hai lần

  • lớp mô hình tách biệt với lớp giao diện người dùng
  • chế độ xem được tách biệt khỏi bộ điều khiển

Lớp mô hình [không phải "lớp" hoặc "đối tượng"] sẽ chứa một số nhóm cấu trúc, mỗi nhóm xử lý như một khía cạnh khác nhau của logic nghiệp vụ. Các phần chính sẽ là

  • đối tượng miền. xác nhận, quy tắc kinh doanh
  • trừu tượng hóa lưu trữ. sự kiên trì và bộ nhớ đệm của dữ liệu từ các đối tượng miền
  • dịch vụ. logic ứng dụng

Ngoài ra, có thể có sự lẫn lộn trong các kho lưu trữ, đơn vị công việc và những thứ khác

Lớp giao diện người dùng chủ yếu bao gồm các khung nhìn và bộ điều khiển. Nhưng cả hai đều sử dụng các dịch vụ để tương tác với lớp mô hình. Các dịch vụ cung cấp cách để bộ điều khiển thay đổi trạng thái của lớp mô hình và để các chế độ xem thu thập thông tin dựa trên trạng thái mới đó

Trong ngữ cảnh của web, các khung nhìn và bộ điều khiển tạo thành một cặp lỏng lẻo, do tính chất phản hồi yêu cầu mà các ứng dụng web thể hiện

Cần lưu ý rằng mặc dù bộ điều khiển có thể trực tiếp thay đổi trạng thái của chế độ xem hiện tại, nhưng phổ biến hơn là những thay đổi này được thực hiện thông qua mô hình. Ví dụ, một lý do để thay đổi chế độ xem trực tiếp là khi thay vì XML, bạn cần phản hồi bằng JSON

Mặc dù cũng có thể lập luận rằng người ta có thể đơn giản khởi tạo một chế độ xem khác nhau cho từng định dạng đầu ra và tận dụng tính đa hình

Không xem là gì?

Có một quan niệm sai lầm phổ biến rằng các khung nhìn chỉ đơn giản là tệp mẫu được tôn vinh. Lỗi này trở nên cực kỳ phổ biến sau khi phát hành khung tạo mẫu RubyOnRails

Lượt xem không phải là mẫu. Nếu bạn sử dụng chúng như vậy, bạn sẽ phá vỡ nguyên tắc cốt lõi đằng sau MVC và các mẫu lấy cảm hứng từ MVC

Nếu bạn giả vờ rằng các mẫu là dạng xem, nó sẽ có tác động rất lớn đến kiến ​​trúc của bạn. Không có chỗ cho logic trình bày trong dạng xem, do đó bạn đẩy logic trình bày trong lớp điều khiển hoặc lớp mô hình. Lựa chọn thông thường là "bộ điều khiển", bởi vì hầu hết mọi người hiểu rằng logic trình bày không có chỗ trong lớp mô hình

Về cơ bản, điều này gây ra sự hợp nhất của chế độ xem và bộ điều khiển

Chế độ xem đang làm gì?

Trách nhiệm của khung nhìn là xử lý logic trình bày. Trong ngữ cảnh của web, mục tiêu của chế độ xem là tạo ra phản hồi cho người dùng [nhân tiện, trình duyệt không phải là con người]

Về mặt kỹ thuật, có thể tạo các chế độ xem phía máy khách, ổ cắm web của người dùng đó để quan sát lớp mô hình, nhưng trên thực tế, điều đó hầu như không thể thực hiện được. Đặc biệt không phải trong môi trường PHP

Để tạo phản hồi này, chế độ xem thu thập thông tin từ lớp mô hình và dựa trên dữ liệu đã thu thập, tập hợp phản hồi bằng cách phân phối dữ liệu tới các mẫu và hiển thị hoặc đôi khi đơn giản gửi tiêu đề vị trí HTTP

Khi sử dụng Đăng/Chuyển hướng/Nhận, phần chuyển hướng được thực hiện bởi chế độ xem chứ không phải bộ điều khiển như mọi người thường làm

Hơi chủ quan cao

Gần đây, tôi thích tương tác với MVC bằng cách sử dụng phương pháp sau

  // the factory for services was injected in constructors
  $controller->{ $method.$command }[$request];
  $response = $view->{ $command }[];
  $response->send[];

$method là REQUEST_METHOD hiện tại, đã được điều chỉnh giả API giống như REST và $command là cái mà mọi người thường gọi là "hành động". Bộ điều khiển có các quy trình riêng biệt cho các yêu cầu GETPOST [khác]. Điều này giúp tránh có cùng một if trong mọi "hành động"

Và trên khung nhìn, tôi gọi phương thức có tên tương tự, chuẩn bị phản hồi được gửi tới máy khách

Cảnh báo. Tôi nghi ngờ rằng thiết lập này có vi phạm SRP. Chấp nhận nó như của riêng bạn có thể là một ý tưởng tồi

Còn KHÔ thì sao?

Như bạn có thể đã nhận thấy, có một vấn đề nhỏ với việc có các dạng xem dưới dạng thể hiện. Bạn sẽ kết thúc với việc lặp lại các đoạn mã. Ví dụ. menu hoặc phân trang

Hãy nhìn vào phân trang. Phân trang chứa logic, nhưng logic này không liên quan đến lớp mô hình. Người mẫu không có khái niệm "trang". Thay vào đó, phần logic này sẽ nằm trong lớp giao diện người dùng. Nhưng nếu mỗi chế độ xem của bạn chứa hoặc kế thừa phân trang, thì đó rõ ràng là vi phạm SRP [và thực tế là một số nguyên tắc khác nữa]

Để tránh sự cố này, bạn có thể [và IMHO nên] giới thiệu các đối tượng trình bày trong chế độ xem của mình

Ghi chú. trong khi Fowler gọi chúng là "mô hình trình bày", tôi nghĩ cái tên đó chỉ làm tăng thêm sự nhầm lẫn về 'mô hình là gì'. Vì vậy, tôi khuyên bạn nên gọi chúng là "đối tượng trình bày" để thay thế

Các đối tượng trình bày xử lý các phần logic lặp đi lặp lại. Điều này làm cho các khung nhìn "nhẹ nhàng" hơn nhiều và trong một số khía cạnh bắt đầu phản ánh cấu trúc của các dịch vụ từ lớp mô hình

Sự tương tác giữa các đối tượng trình bày và các mẫu trở nên tương tự như sự tương tác giữa các đối tượng miền và trình ánh xạ dữ liệu

Tôi có luôn cần tất cả những thứ này không?

Không. Cách tiếp cận cụ thể này chủ yếu hướng đến mã, trong đó lớp giao diện người dùng có rất nhiều độ phức tạp và bạn cần tách việc xử lý đầu vào khỏi bản trình bày một cách lành mạnh

Nếu ứng dụng của bạn có giao diện người dùng rất đơn giản, như. emm. bạn đang tạo API REST cho một dự án tích hợp lớn hơn. Trong đó, tùy chọn thực dụng có thể chỉ hợp nhất mọi cặp chế độ xem bộ điều khiển thành một lớp duy nhất

Nó cũng có thể là một bước tốt khi tái cấu trúc một cơ sở mã kế thừa, bởi vì cách tiếp cận ít ràng buộc này cho phép bạn di chuyển toàn bộ các đoạn mã cũ. Khi bạn đã tách riêng các đoạn mã cũ hơn như vậy và kiểm tra, mọi thứ vẫn hoạt động [vì mã kế thừa không bao giờ có bất kỳ thử nghiệm nào. đó là cách nó trở thành "kế thừa"], sau đó bạn có thể bắt đầu chia nhỏ nó hơn nữa, đồng thời tập trung vào việc tách logic nghiệp vụ khỏi giao diện người dùng

P. S. Bản thân tôi vẫn đang vật lộn với việc tìm ra cách tốt nhất để giải quyết các quan điểm. Bài đăng này không phải là một câu trả lời mà giống như một bức ảnh chụp nhanh về hiểu biết hiện tại của tôi

Chế độ xem PHP là gì?

Giới thiệu. "Chế độ xem là câu lệnh chọn được lưu trữ trong cơ sở dữ liệu dưới dạng đối tượng cơ sở dữ liệu ". Hoặc chúng ta có thể nói Lượt xem là các tệp chứa thông tin hiển thị cho ứng dụng của bạn. Để tạo chế độ xem, bạn sử dụng câu lệnh CREATE VIEW.

Chế độ xem là gì và tại sao nó được sử dụng?

Chế độ xem là tập hợp con của cơ sở dữ liệu được tạo từ truy vấn của người dùng và được lưu trữ dưới dạng đối tượng cố định . Ví dụ, trong cơ sở dữ liệu ngôn ngữ truy vấn có cấu trúc [SQL], dạng xem trở thành một loại bảng ảo với các hàng và cột được lọc bắt chước các hàng và cột của cơ sở dữ liệu gốc.

Làm cách nào để chạy chế độ xem trong PHP?

Có thể tạo chế độ xem bằng cách sử dụng câu lệnh CREATE VIEW và sau đó viết truy vấn đơn giản . Chế độ xem được lưu trữ trên bảng cơ sở dữ liệu giống như các bảng khác. Giả sử bạn muốn gọi chế độ xem từ mã php thì bạn phải viết lựa chọn đơn giản với tên của chế độ xem. Bằng cách này, bạn có thể gọi chế độ xem từ mã PHP.

Chế độ xem trong MySQL là gì?

Chế độ xem MySQL . Một dạng xem chứa các hàng và cột, giống như một bảng thực. Các trường trong dạng xem là các trường từ một hoặc nhiều bảng thực trong cơ sở dữ liệu. a virtual table based on the result-set of an SQL statement. A view contains rows and columns, just like a real table. The fields in a view are fields from one or more real tables in the database.

Chủ Đề