From a3ae40ad5e565a7f95edc5b92c6c9011eca5e68b Mon Sep 17 00:00:00 2001 From: Phan Xuan Dung Date: Fri, 18 Dec 2015 11:54:40 +0700 Subject: [PATCH] update struct application components --- .../structure-application-components.md | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 docs/guide-vi/structure-application-components.md diff --git a/docs/guide-vi/structure-application-components.md b/docs/guide-vi/structure-application-components.md new file mode 100644 index 0000000000..ce2a8754ad --- /dev/null +++ b/docs/guide-vi/structure-application-components.md @@ -0,0 +1,119 @@ +Các thành phần ứng dụng +====================== + +Mỗi ứng dụng là hiện thực của [mẫu thiết kế Service Locators](concept-service-locator.md). Mỗi ứng dụng sẽ chứa các thành phần +được gọi là *thành phần ứng dụng* giúp cung cấp các dịch vụ cho các tiến trình xử lý. Chẳng hạn, +thành phần `urlManager` đảm nhiệm chức năng cho bộ định tuyến cho các yêu cầu xử lý Web tới các bộ điều khiển; +thành phần `db` cung cấp các dịch vụ để giao tiếp với cơ sở dữ liệu (CSDL); và các thành phần khác. + +Mỗi thành phần ứng dụng đều có một định danh ID giúp xác định thành phần duy nhất trong cùng một ứng dụng +. Bạn có thể truy cập vào các thành phần ứng dụng qua câu lệnh sau. + +```php +\Yii::$app->componentID +``` + +Ví dụ, sử dụng câu lệnh `\Yii::$app->db` để lấy thông tin [[yii\db\Connection|kết nối tới CSDL]], +và câu lệnh `\Yii::$app->cache` để lấy thông tin [[yii\caching\Cache|primary cache]] đã đăng ký trong ứng dụng. + +Mỗi thành phần ứng dụng được tạo một lần và được truy cập trong ứng dụng. Và có bất kỳ sự truy cập nào +sau đó đều trả về cùng một thể hiện của thành phần đó. + +Bất kỳ đối tượng nào cũng có thể là thành phần ứng dụng. Bạn có thể đăng ký chúng bằng việc thiết lập các +thuộc tính [[yii\base\Application::components]] vào trong [mục cấu hình ứng dụng](structure-applications.md#application-configurations). +Ví dụ, + +```php +[ + 'components' => [ + // Dung class để đăng ký thành phần "cache" + 'cache' => 'yii\caching\ApcCache', + + // Dùng mảng các tham số để đăng ký thành phần "db" + 'db' => [ + 'class' => 'yii\db\Connection', + 'dsn' => 'mysql:host=localhost;dbname=demo', + 'username' => 'root', + 'password' => '', + ], + + // Dùng hàm để đăng ký thành phần "search" + 'search' => function () { + return new app\components\SolrService; + }, + ], +] +``` + +> Lưu ý: Bạn cần đăngk ý các thành phần ứng dụng một cách cẩn thận. + Các thành phần ứng dụng cũng như các biến có phạm vi toàn cục. Sử dụng quá nhiều các thành phần ứng dụng có thể khiến mã nguồn + khó kiểm tra và bảo trì. Cách tốt nhất, bạn nên khởi tạo các thành phần ở phạm vi cục bộ + và khi cần thiết có thể thêm vào ứng dụng. + + +## Thành phần tải tự động (Bootstrapping) + +Như đề cập ở trên, các thành phần ứng dụng chỉ được khởi tạo khi nó được truy cập vào lần đầu tiên. +Nếu thành phần không được truy cập tại các yêu cầu xử lý, thì sẽ không được khởi tạo. Tuy vậy , thỉnh thoảng, các thành phần ứng dụng +có thể được khởi tạo ở mỗi yêu cầu, thậm chí nó không được truy cập. +Để làm được như vậy, bạn cần liệt kê các định danh vào trong thuộc tinh [[yii\base\Application::bootstrap|bootstrap]] của ứng dụng application. + +Ví dụ, thông tin cấu hình sau sẽ chắc chắn rằng thành phần `log` luôn luôn được tải: + +```php +[ + 'bootstrap' => [ + 'log', + ], + 'components' => [ + 'log' => [ + // Các thiết lập cho thành phần "log" + ], + ], +] +``` + + +## Các thành phần ứng dụng chính + +Yii định nghĩa danh sách các thành phần ứng dụng chính cùng với nó là các định danh và thông tin cấu hình. Ví dụ, +thành phần [[yii\web\Application::request|request]] được dùng để lấy thông tin về các yêu cầu từ user +và xác minh rồi gửi tới các [bộ định tuyến (route)](runtime-routing.md); thành phần [[yii\base\Application::db|db]] +có chức năng thiết lập các kết nối và thông qua đó bạn có thể thực hiện các truy vấn vào CSDL. +Như vậy, các thành phần ứng dụng sẽ giúp ứng dụng Yii tiếp nhận các yêu cầu từ user. + +Phần dưới là danh sách các thành phần ứng dụng chính được xác định trước. Bạn cần phải cấu hình và tùy biến chúng +như những thành phần ứng dụng khác. Mỗi khi bạn cấu hình các thành phần này, +nếu bạn không xác định các class, thì giá trị mặc định sẽ được dùng. + +* [[yii\web\AssetManager|assetManager]]: quản lý các file tài nguyên (asset) được đóng gói và chia sẽ. + Tham khảo thêm mục [Quản lý các file tài nguyên](structure-assets.md) để biết thêm chi tiết. +* [[yii\db\Connection|db]]: thực hiện kết nối CSDL và dựa vào thành phần có thể thực hiện các câu lệnh truy vấn dữ liệu. + Lưu ý, khi bạn thiết lập thành phần này, bạn cần phải cung cấp các thông tin về các thuộc tính được yêu cầu + , như [[yii\db\Connection::dsn]]. + Tham khảo thêm tại mục [Data Access Objects](db-dao.md) để biết thêm thông tin. +* [[yii\base\Application::errorHandler|errorHandler]]: nắm giữ các ngoại lệ và lỗi của PHP. + Tham khảo thêm mục [Bắt lỗi](runtime-handling-errors.md) để biết thêm thông tin. +* [[yii\i18n\Formatter|formatter]]: định dạng dữ liệu mỗi khi gửi tới user. Ví dụ, các số có thể được + hiển thị cùng với các dấu ngăn cách phần ngàn, ngày có thể được định dạng ở dạng ngày dài. + Tham khảo thêm tại mục [Định dạng dữ liệu](output-formatting.md) để biết thêm thông tin. +* [[yii\i18n\I18N|i18n]]: hỗ trợ định dạng và dịch đa ngôn ngữ. + Tham khảo thêm tại mục [Internationalization](tutorial-i18n.md) để biết thêm thông tin. +* [[yii\log\Dispatcher|log]]: quản lý mục log. + Tham khảo thêm tại mục [Logging](runtime-logging.md) để biết thêm thông tin. +* [[yii\swiftmailer\Mailer|mail]]: hỗ trợ soạn thảo và gửi email. + Tham khảo thêm tại mục [Mailing](tutorial-mailing.md) để biết thêm thông tin.. +* [[yii\base\Application::response|response]]: represents the response being sent to end users. + Tham khảo thêm tại mục [Responses](runtime-responses.md) để biết thêm thông tin.. +* [[yii\base\Application::request|request]]: tiếp nhận các yêu cầu từ user. + Tham khảo thêm tại mục [Requests](runtime-requests.md) để biết thêm thông tin.. +* [[yii\web\Session|session]]: quản lý các phiên (session). Thành phần này chỉ được kích hoạt với + [[yii\web\Application|Ứng dụng Web]]. + Tham khảo thêm tại mục [Sessions and Cookies](runtime-sessions-cookies.md) để biết thêm thông tin.. +* [[yii\web\UrlManager|urlManager]]: xử lý thông tin về URL. + Tham khảo thêm tại mục [URL Parsing and Generation](runtime-routing.md) để biết thêm thông tin.. +* [[yii\web\User|user]]: giúp xác thực người dùng. Thành phần này chỉ được kích hoạt với + [[yii\web\Application|Ứng dụng Web]] + Tham khảo thêm tại mục [Xác thực (Authentication)](security-authentication.md) để biết thêm thông tin.. +* [[yii\web\View|view]]: hỗ trợ giao diện. + Tham khảo thêm tại mục[Views](structure-views.md) để biết thêm thông tin..