09/10/2018, 23:27
PHP6 và từ khóa "use" :-??
Lúc nãy tôi đọc code của Zend Engine, tự nhiên thấy đoạn này:
Đoạn code (C) trên là đoạn mà Zend Engine define các từ khóa, symbol của PHP.
Thử viết PHP thì rõ ràng là Editor hiển thị nó như một keyword.
Chạy thử bằng dòng code sau:
Tôi nhận được dòng thông báo lỗi sau:
Fatal error: use: Not yet supported. Please use include_once() or require_once() in E:www5.php on line 34
Tôi check trong code của Zend Engine 1 và 2 (PHP 4.4.6 và PHP 5.2.1) đều có define từ khóa trên.
Tôi tìm trên Google nhưng không thấy gì cả ! Tìm trong PHP Manual cũng không có. Xin hỏi các bác guru, các bác có biết gì về vụ này không ạ?
Tôi đồ rằng từ khoa use này sẽ được dùng cho namespace !
Có thể sẽ sử dụng như sau:
Sở dĩ tôi nghĩ thế vì tôi tìm thấy trong code Zend Engine dòng sau:
Ai có ý kiến gì không ? :|
Code:
/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { T_USE = 335, // ......................... }; #endif
Thử viết PHP thì rõ ràng là Editor hiển thị nó như một keyword.
Chạy thử bằng dòng code sau:
Code:
use 'test.php';
Fatal error: use: Not yet supported. Please use include_once() or require_once() in E:www5.php on line 34
Tôi check trong code của Zend Engine 1 và 2 (PHP 4.4.6 và PHP 5.2.1) đều có define từ khóa trên.
Tôi tìm trên Google nhưng không thấy gì cả ! Tìm trong PHP Manual cũng không có. Xin hỏi các bác guru, các bác có biết gì về vụ này không ạ?
Tôi đồ rằng từ khoa use này sẽ được dùng cho namespace !
Có thể sẽ sử dụng như sau:
Code:
use 'ParisHilton.php'; // với ParisHilton.php là file định nghĩa namespace do Paris Hilton viết :D
Code:
| T_USE use_filename ';' { zend_error(E_COMPILE_ERROR,"use: Not yet supported. Please use include_once() or require_once()"); zval_dtor(&$2.u.constant); }
Bài liên quan
Chú ý đoạn này:
T_USE use_filename ';'
Nếu nó là để dùng cho namespace thì có thể đoán ra được cách mà PHP làm việc với các file php chứa khai báo namespace. Có thể là trong file khai báo namespace, không được làm gì khác hết. Như thế thì hơi khác so với cách làm việc truyền thống của PHP. Cũng không thể lý giải được việc làm thế nào để PHP chỉ load một lớp hay hàm thành viên thuộc namespace nào đó (namespace trong PHP sẽ không hỗ trợ biến thành viên, chỉ có lớp và hàm).
Chịu thôi ! +_+
Hiện tại php6 bản dev vẫn chưa hỗ trợ namespace ! Và khi nói về sự hỗ trợ tính năng này, người ta vẫn dùng từ "If".
Xem blog này: http://php6dev.blogspot.com/
Ví dụ: http://codewalkers.com/phpdocs/reserved.html