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:

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
Đ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:
Code:
use 'test.php';
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:
Code:
use 'ParisHilton.php'; // với ParisHilton.php là file định nghĩa namespace do Paris Hilton viết :D
Sở dĩ tôi nghĩ thế vì tôi tìm thấy trong code Zend Engine dòng sau:

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); }
Ai có ý kiến gì không ? :|
jiSh@n viết 01:37 ngày 10/10/2018
Quote Được gửi bởi mr47 View Post
Tôi đồ rằng từ khoa use này sẽ được dùng cho namespace !
Rất có thể sẽ là như vậy, vì PHP6 sẽ có namespace mà. Nhưng ZE định nghĩa trước có thể sẽ sp namespace trong 1 phiên bản gần đây hơn là v6.
mr47 viết 01:27 ngày 10/10/2018
Việc nó hiện ra một lỗi fatal cùng với thông báo "hãy sử dụng require_once" có thể cho thấy rằng từ khó "use" sẽ được dùng để load một class hay một namespace.

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/
mr47 viết 01:37 ngày 10/10/2018
Tôi dùng IDE Eclipse PDT và default text editor của tôi là Notepad++, cả 2 đều đưa use vào danh sách từ khóa. Một số tutorial cho PHP beginer cũng có đưa nó vào danh sách từ khóa, nhưng tuyệt nhiên không giải thích gì !
Ví dụ: http://codewalkers.com/phpdocs/reserved.html
terafunny viết 01:40 ngày 10/10/2018
Namespace là gì vậy? Dùng nó thì có lợi ích gì? (cái này tôi chưa nghe bao giờ). Cảm ơn.
dragon123 viết 01:41 ngày 10/10/2018
@terafunny : Vọc C# đi rùi biết liền à
cái nick đó viết 01:33 ngày 10/10/2018
hic loạn hết cả lên
Bài liên quan
0