2012-10-07 23 views
8

chức năng Thông thường, tôi đã thấy được gọi nhưSử dụng các biến tạm thời trong khi gọi hàm trong PHP

$content = getContent($isAdmin = false) 

Trong khi khai báo hàm là như

function getContent($isAdmin = true){ 
....} 

Tại sao mọi người sẽ thêm một tình trạng quá tải của việc tạo ra một biến và chỉ sử dụng nó một lần trong một cuộc gọi hàm !!

Tôi hiểu rằng điều này làm cho hàm gọi rõ ràng, nhưng chúng ta không nên sử dụng các khối PHPDoc thay thế?

+1

Đó biến nhiệm vụ bằng cách này là khá rẻ. Bạn có những rắc rối bộ nhớ anyway, ngay cả khi sẽ không có một biến. PHP rất tốt với những thứ như vậy. Đừng lo sợ các biến, ngay cả khi bạn chỉ sử dụng chúng một lần, hãy sử dụng chúng. Họ sẽ cải thiện mã của bạn. – hakre

Trả lời

7

Tôi có cảm giác rằng bạn đang bị sốc bởi rất nhiều "chất thải".

Giữ lạnh, sử dụng các biến không có gì là xấu, bạn nên sử dụng chúng thường xuyên. Họ thường làm cho mã của bạn mô tả hơn và thậm chí nhanh hơn.

Phần mô tả nhiều hơn là trường hợp ở đây, nếu bạn nhìn vào dòng đó, bạn sẽ thấy thông số nào là vì bây giờ nó có tên.

nhưng chúng ta không nên sử dụng khối PHPDoc thay thế?

Vâng, thực ra điều này không liên quan đến nhận xét (docblock). Thậm chí trong định nghĩa chức năng, không có bình luận cho rằng tham số:

function getContent($isAdmin = true) { 

Nó chỉ là định nghĩa của các tham số theo tên của nó. Ngoài ra các tham số docblock sẽ là chỉ khi bạn xác định các chức năng:

... 
* @param $isAdmin bool (optional) true or false, true by default 
... 
function getContent($isAdmin = true) { 

Tuy nhiên đó không phải là nơi hàm được gọi:

$content = getContent($isAdmin = false) 

Vì vậy, nếu bạn nhìn vào dòng đó (và trước khi nhấn bất kỳ phím nóng hoặc nút chuột), bạn đã đọc nó. Không có gì cần thiết, chỉ có mã. Hoạt động ngay cả trong notepad hoặc gedit không cấu hình.

$nonAdmin = false; 
$content = getContent($nonAdmin); 

Và btw, nếu mã của bạn cần ý kiến, điều này là bình thường một dấu hiệu cho thấy nó quá phức tạp. Ngoài ra tên của một tham số quan trọng hơn nhiều so với nó là docblock. Một tên tốt thường có nghĩa là bạn không cần phải có một thẻ docblock cho nó (có nghĩa là: ít mã hơn để duy trì), bởi vì tên nói cho chính nó.

IDE hiện đại cũng biết loại tham số bằng phân tích tĩnh và do đó bạn không cần thẻ docblock. Vì vậy, không, bạn không chỉ nên sử dụng PHPDocblocks.

+0

+1 Đối số mạnh mẽ tôi tự hỏi khi đối số từ khóa sẽ được hỗ trợ trong PHP – Baba

+0

+1 cho "Vì vậy, không, bạn không chỉ nên sử dụng PHPDocblocks.", Điều này chỉ khiến tôi tự hỏi là hiện đại nhất của IDE hiển thị tên tham số chức năng cùng với kiểu dữ liệu của nó (nếu được cung cấp một giá trị mặc định) – Akash

3

Viết như:

$content = getContent($isAdmin = false) 

phép $isAdmin được xác định ngay cả bên ngoài phạm vi chức năng, ví dụ: khi bạn phát hành một var_dump($isAdmin), bạn sẽ có được bool(false).

Bằng cách này giúp bạn tiết kiệm một phân var:

$isAdmin = false; 
$content = getContent($isAdmin); 
... 
someStuff($isAdmin); 
Các vấn đề liên quan