Path alias trong Yii là gì và cách sử dụng
Path alias được sử dụng rất thường xuyên trong Yii, nó thường được sử dụng để khai báo đường dẫn lưu trữ tập tin được upload lên server hoặc import các thư viện mở rộng. Trong các hướng dẫn sắp tới tôi thường dùng path alias nên xin giới thiệu sơ lược về nó và cách sử dụng như thế nào.
Với cấu trúc thư mục được sinh ra bởi yiic đáp ứng theo mô hình MVC cho các dự án, chúng ta có thể không cần phải thay đỗi nó. Nhưng nếu bạn muốn làm điều đó, hoặc cần tạo ra các widget, component hay api của riêng bạn, nhưng chúng được lưu trữ trong những folder khác nhau trong ứng dụng, lúc này path alias trong Yii sẽ rất hữu ích.
Path alias là bí danh, nó được gán cho một thư mục hoặc tập tin trong dự án của bạn; được viết theo cú pháp RootAlias.path.to.target.
Mặc định Yii đã có sẵn 5 path alias cho bạn sử dụng:
- system: tham chiếu đến thư mục chứa framework path_to_webroot/framework
- zii: tham chiếu đến thư mục của thư viện zii path_to_webroot/framework/zii
- application: tham chiếu đến thư mục gốc của ứng dụng path_to_webroot/protected
- ext: tham chiếu đến thư mục chứa các extensions path_to_webroot/protected/extensions
- webroot: tham chiếu đến thư mục chứa bootstrap file (index.php) path_to_webroot
Để tạo ra một path alias cho riêng bạn, Yii có hỗ trợ trợ sẵn các thương thức giúp bạn thực hiện điều này là setPathOfAlias, getPathOfAlias và import.
setPathOfAlias
Giả sử tôi có một thư mục lưu trữ các avatar của người dùng trong nhiều thư mục con như webroot\uploads\system\avatars. Để dễ dàng hơn tôi sử dụng Yii::setPathOfAlias để tạo ra một path alias cho thư mục này.
Chúng ta đặt các path alias này trong tập tin protected\config\main.php như sau:
Yii::setPathOfAlias('avatars',dirname(__FILE__).DS.'uploads'.DS.'system'.DS.'avatars');
getPathOfAlias
Khi dùng bạn chỉ cần gọi:
Yii::getPathOfAlias('avatars')
hệ thống sẽ tự sinh ra đường dẫn thực trên máy chủ cho bạn. Ví dụ này sẽ sinh ra đường dẫn thực là
E:\Server\demo\protected\config\uploads\system\avatars (tôi đã thay đỗi thư mục gốc của server tới E:\Server cho dễ quản lý thay vì để mặc định)
Lưu ý: getPathOfAlias không kiểm tra sự tồn tại của thư mục mà chỉ kiểm tra alias này có tồn tại hay không.
Import
Điều khó chịu nhất khi lập trình với PHP là phải include hoặc require các tập tin cần thiết trước khi sử dụng. Việc sử dụng path alias sẽ thuận tiện hơn khi cần import một class. Phương pháp import này hiệu quả hơn include và require vì một class sẽ không được import cho đến khi nó được tham chiếu lần đầu tiên. Import nhiều lần qua alias cũng nhanh hơn so với include_once và require_once, Yii sẽ không tải một class hai lần, vì vậy nó thật sự an toàn khi vô tình import cùng một class nhiều lần (theo thông tin trên trang Yii Framework).
Chẳng hạn chúng ta cần import class PHPExcel để sử dụng thư viện PHPExcel sẽ dùng cú pháp sau
Yii::import('system.vendors.PHPExcel.PHPExcel');
Để import toàn bộ thư mục cho các class bên dưới được tự động đưa vào khi cần thiết chúng ta có thể sử dụng cú pháp:
Yii::import('system.vendors.*');
require_once('Zend/Feed.php');
require_once('Zend/Feed/Rss.php');
Ví dụ này giúp bạn import và sử dụng các class có sẵn trong Zend để tạo tin RSS.
Với kiến thức hạn hẹp, có gì sai các bạn comment bên dưới để mình cập nhật lại.
Việc chia sẽ những thông tin với nhau là rất tốt; tuy nhiên hãy ghi rõ nguồn gốc khi bạn phát hành lại thông tin nhằm tôn trọng người viết cũng như tôn trọng chính bạn!