2011-02-10 38 views
19

Có rất nhiều ví dụ về cả trên web. Hướng dẫn sử dụng php nói "Câu lệnh include() [...]", có vẻ mâu thuẫn - nếu đó là câu lệnh không nên có dấu ngoặc đơn?Chức năng 'include' của php có phải là một hàm hay một câu lệnh không?

Cả hai công việc:

include('somefile.php'); 
include 'somefile.php; 

Vì vậy, nên tôi hay bất cứ ai chăm sóc khác?

+3

Không, ta không bao giờ nên quan tâm mà không cần lý do nào đó. –

Trả lời

28

Trích dẫn từ hướng dẫn (tôi nhấn mạnh)

Bởi vì bao gồm() là một ngôn ngữ đặc biệt xây dựng, dấu ngoặc đơn là không phải là cần thiết xung quanh đối số của nó.

Đây cũng được gọi là "biểu mẫu đặc biệt" và bao gồm những điều như là câu hỏi echoreturn. Lưu ý rằng mặc dù không có hàm nào trong số này là các hàm, nhưng bạn vẫn có thể nói về các biểu thức và câu lệnh, sự khác biệt là giá trị cũ có giá trị trong khi các giá trị sau không có. Vì include, include_once, requirerequire_once tất cả trả về một giá trị (TRUE nếu bao gồm thành công), chúng có thể được sử dụng trong biểu thức. Bởi lý do này, "tuyên bố bao gồm" sẽ không chính xác, mặc dù include s hầu như luôn được sử dụng làm báo cáo.

+1

+1 cho "cấu trúc ngôn ngữ" – igorw

1

Giá trị đơn trong các lần đánh giá sẽ tự động đánh giá chính bản thân giá trị, do đó bản thân các parens không có hậu quả gì.

-1

Báo cáo chỉ có một tham số, có thể có cũng ngoặc đơn, ví dụ:

echo ('hello world'); 
9

bao gồm là một tuyên bố: Giải thích bằng cách làm theo ví dụ

// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('') 
if (include('vars.php') == 'OK') { 
    echo 'OK'; 
} 

// works 
if ((include 'vars.php') == 'OK') { 
    echo 'OK'; 
} 
+0

+1 cho ví dụ tiêu cực – PeerBr

+0

Đây thực sự không phải là một ví dụ tiêu cực, vì việc đặt dấu ngoặc đơn quanh 'include' không loại trừ việc đặt dấu ngoặc đơn xung quanh đối số. 'if ((include ('vars.php')) == 'OK') {echo 'OK'; } '. – dotancohen

1

Cả. Trong nhiều lĩnh vực của tài liệu PHP, mọi thứ được gọi là một tuyên bố. Ví dụ (từ các cấu trúc điều khiển) - "Một câu lệnh có thể là một nhiệm vụ, một cuộc gọi hàm, một vòng lặp, một câu lệnh có điều kiện hoặc thậm chí một câu lệnh không làm gì cả (một câu lệnh rỗng)."

Sự khác biệt giữa câu lệnh và hàm là vấn đề ngữ nghĩa của ngôn ngữ riêng lẻ. Do đó, các nhà bảo trì PHP định nghĩa rõ ràng điều này hoặc để cho nó vẫn còn mơ hồ.

1

include, require, echo, print, và một số ít các từ khóa khác là cấu trúc ngôn ngữ của riêng mình, chứ không phải là chức năng cuộc gọi, và không cần dấu ngoặc đơn. Tuy nhiên, một số người thích giả vờ là họ đang gọi hàm và sử dụng dấu ngoặc đơn. Chúng giống hệt nhau.

-1

Tôi tin rằng sự khác biệt duy nhất là những gì bạn muốn làm.

Ví dụ, hai

echo 'Hello World'; 
echo ('Hello World'); 

... cả in Hello World.

Nó chỉ là những gì bạn muốn làm, những gì bạn cảm thấy thoải mái nhất, và nếu bạn đang như tôi, bạn muốn thực hiện kịch bản của bạn trông khá: D

5

Các dấu ngoặc đơn là các thông số cho một hàm. Với include bạn có thể sử dụng nó làm chức năng hoặc một câu lệnh trong php.

Vì include() là một cấu trúc ngôn ngữ đặc biệt, dấu ngoặc đơn không phải là cần thiết xung quanh đối số của nó.

Tài liệu ở đây: http://php.net/manual/en/function.include.php

Với echo cùng khái niệm, trích dẫn từ cuốn hướng dẫn PHP here

tiếng vang không phải là thực sự là một chức năng (nó là một cấu trúc ngôn ngữ), vì vậy bạn không yêu cầu để sử dụng dấu ngoặc đơn. echo (không giống như một số cấu trúc ngôn ngữ khác ) không hoạt động như một hàm, do đó không thể sử dụng trong ngữ cảnh của hàm.

0

cho tiếng vang luôn luôn sử dụng echo "test"

<?php 
// this will give you error 
echo ("test","test"); 

//that will work fine 
echo "test","test"; 
?> 
Các vấn đề liên quan