Hỏi vấn đề require() trong PHP. Sao không có tham chiếu nhỉ các bạn?
Cho mình hỏi một vấn đề. Mình mới tìm hiểu về PHP và lúc trước mình có tìm hiểu về python. Mình muốn hỏi rõ hơn về vấn đề import file .php khác vào file chính sử dụng lệnh require (path);
Nhưng các biến và các function ở file khác xử dụng được trực tiếp trong file chính, chứ không qua tham chiếu như ở Python như: name.abc() - name là tên file chẳng hạn. Mình thấy cách này của python an toàn hơn PHP. Vậy để đặt tham chiếu ở PHP thì làm thế nào các bạn nhỉ, để kiểu này các biến và các function chồng chéo lên nhau nguy hiểm quá. Cám ơn các bạn!!
Tham chiếu là cái gì? Bạn dùng chữ tiếng Anh nghe xem thử?
Bạn tìm hiểu PHP là cái gì? require có phải là function đâu mà bạn đòi có mở ngoặc và truyền tham số cho nó, nên không có việc an toàn/ kém an toàn ở đây. require ở đây là một statement của PHP (nó có mặt trong danh sách http://php.net/manual/en/reserved.keywords.php ).
Bạn cần phải đọc về cơ bản PHP để hiểu tổng quan về ngôn ngữ, các quy ước và syntax của PHP đi đã, dường như bạn đang đi vội quá nên bị “hổng chân” rồi đó.
ko bạn ơi ban ko hiểu ý mình. Ý mình là
require ("php/view.php");
là hàm import một tài liệu php khác vào tài liệu cần import, giống như từ khóa import của python. Và với require như trên kia thì toàn bộ hàm và biến của file view.php sẽ sử dụng được trực tiếp trong file chính đó.Còn ví dụ python:
from php import view.py
muốn sử dụng hàm nào trong view.php thì phải: php.view() chẳng hạn
Python bạn import là import cái module hoặc package chứ không phải là file, mặc dù bạn thấy có tên file xuất hiện. Cho nên, về mặt lý thuyết, việc so sánh import bên Python với require bên PHP là so sánh không chuẩn. Nếu bạn muốn “an toàn” như kiểu bạn muốn, thì file PHP bạn nên viết như một class và require vào rồi tạo và gọi các phương thức, gán biến của class đó.
Mình đoán 99% là bạn đang nói đến namespace. Namespace có thể áp dụng cho hàm, class. Khi khai báo namespace trong một file thì khi
include
hayrequire
vào file khác bạn bắt buộc phải chỉ rõ hàm đó thuộc namespace nào khi gọi hàm.Ví dụ:
FileA.php
FileB.php
FileC.php
Như bạn thấy, cú pháp gọi hàm từ namespace là
<tên namespace>\<tên function>
dùng dấu \ thay vì dấu . Bạn tham khảo thêm ở manual.Nếu bạn mới bắt đầu với PHP, mình recommend bạn đọc:
Cám ơn bạn!!! namespace nó làm cho code an toàn hơn =D. Nhân tiện cho mình hỏi chút. Tài liệu chuẩn coding mà bạn giới thiệu trên kia, là tổng hợp các viết code chuẩn cho PHP ah
Coding standard là chuẩn chung giúp code của bạn sáng sủa, đồng nhất, dễ đọc hơn.
Sau này bạn đi làm, thường sẽ có phần code review, có người review code của bạn, không phải tất cả công ty đều dùng chung 1 chuẩn, tuy nhiên đa số đều áp dụng mấy chuẩn PSR kia và hầu hết các project PHP opensource hiện nay đều tuân theo. Bạn nên tập thói quen viết theo chuẩn ngay từ đầu, đầu tiên là hai chuẩn PSR-1-basic-coding-standard và PSR-2-coding-style-guide hoặc tham khảo tiếng Việt ở đây.
@it-4-life Cảm ơn bạn ah. Bạn có tài liệu code CHUẨN javascript front-end ko vậy cho mình xin với. Cảm giác code không đúng chuẩn, bừa bãi nản thật bạn ah. Nhìn code người khác viết sau đó xem lại code của mình thấy xúc động quá
Bạn tham khảo mấy cái guide này hoặc search
javascript style guide