Từ khóa “use” trong PHP ?

Từ khóa “use” trong PHP ?

Nếu bạn viết PHP, bạn đã biết đến từ khóa này chưa ? Hãy thử tạo vào chạy một file php như sau :

use ‘ xxx.php ‘ ; / / với xxx.php là một file php nào đó .

Đây là thông tin lỗi fatal bạn nhận được :

Fatal error: use: Not yet supported. Please use include_once() or require_once() in E:\www\5.php on line 2

Tôi tìm ra được nó khi đang đọc mã nguồn của Zend Engine ( v2 PHP 5.2.1 ). Nó được khai báo như một từ khóa trong PHP. Tôi thử viết nó ra Eclipse PDT, PHP IDE của tôi, thì khá quá bất ngờ vì nó được highlight như một keyword. Vậy đích thị nó là một từ khóa mà Andi và Zeev đã định đưa vào PHP nhưng vì một nguyên do nào đó mà họ chưa làm điều này. Vậy đây là từ khóa để làm gì ?

Xem câu thông tin lỗi trên cộng với ngữ nghĩa của từ “ use ” thì ta hoàn toàn có thể đoán ra là nó được dùng để load một class hoặc một namespace ( ? ! ! ). Như mọi người đã biết, PHP6 được xem là sẽ tương hỗ namespace, mà PHP 5.2 thì cũn rất gần PHP6 rồi. Tôi lật đật tải về mã nguồn PHP 4.4.6 để tìm hiểu thêm và vẫn thấy nó “ chễm chệ ” trong đó ! Vậy từ khóa “ use ” có phải là để sẵn sàng chuẩn bị cho sự tương hỗ namespace trong PHP6 ? ? ?

Có thể là đúng hoặc cũng rất có thể là nó chỉ được lên kết hoạch để sử dụng trong việc load class trong PHP4 và PHP5. Nếu như thế thì cũng dễ hiểu tại sao nó được “Not yet supported” ! PHP là một ngôn ngữ text-processing, mã PHP không được compile vào một chỗ, PHP coder chỉ load một file mã thay vì load chính xác một class, hay một hàm nào đó ra để sử dụng (như kiểu trong C++ có chỉ thị “using …” ). Nếu sử dụng từ khóa use như kiểu trên, PHP coder chắc chắn phải init một cái gì đó trước khi đi vào phần mã chính của ứng dụng, bên cạnh đó sẽ nảy sinh ra nhu cầu phải có một quy tắc về cách lưu trữ các class trong các file mã PHP. Ví dụ class phải được đặt ở đâu, thư mục nào (phải init trước), trong file class sẽ có những gì … Cách làm việc đó không giống với bản chất của PHP nói riêng hay một ngôn ngữ text-processing nói chung (tất nhiên sẽ khác nếu bạn sử dụng một PHP framework tốt).

Đây cũng chính là yếu tố mà theo tôi là làm đau đầu những nhà tăng trưởng PHP, khiến họ không dứt khoát trong việc đưa namespace vào PHP. Nếu tương hỗ namespace, PHP coder sẽ phải map những class ( thực ra là được đặt trong những file ) thuộc một namespace như thế nào để tránh thực trạng khai báo tổng thể vào một file text dài gần 10000 dòng ? Hoặc, làm thế nào để chỉ load một lớp con của một namespace, ví dụ điển hình Zend :: Json ( hay Zend / Json ) ? Như vậy việc load những namespace vào mã nguồn sẽ làm ứng dụng chạy chậm hơn vì Zend Engine phải mất thời hạn parse và xác định những class, những hàm trong namespace ?
Anyway, hãy trông đợi !

Share this:

Thích bài này:

Thích

Đang tải …

Bạn đang đọc: Từ khóa “use” trong PHP ?