2009-09-08 44 views
13

Chỉ cần làm rõ: Những vấn đề "echo vs in" và "dấu ngoặc kép vs dấu nháy đơn" được hiểu một cách hoàn hảo, đây là khoảng khác điều:php echo vs thẻ mở & gần

Có bất kỳ lý do tại sao người ta sẽ thích:

echo '<table>'; 
foreach($lotsofrows as $row) 
{ 
    echo '<tr><td>',$row['id'],'</td></tr>'; 
} 
echo '<table>'; 

qua:

<table><?php 
     foreach($lotsofrows as $row) 
     { ?> 
      <tr> 
       <td><?php echo $row['id']; ?></td> 
      </tr><?php 
     } ?> 
</table> 

sẽ hoặc là một thực/phân tích nhanh hơn? thanh lịch hơn? (v.v.)

Tôi có xu hướng sử dụng tùy chọn thứ hai, nhưng tôi lo lắng rằng tôi có thể đang xem xét điều gì đó hiển nhiên/cần thiết.

+0

Cảm ơn tất cả các ý kiến, tôi biết rằng đây không phải là câu hỏi có câu trả lời, nhưng nó thu hút sự chú ý là không có gì chính thức trong hướng dẫn sử dụng PHP và phản hồi được cung cấp vô cùng hữu ích: Tôi không biết các tùy chọn đầu tiên có thể đọc được nhiều hơn thứ hai, vì vậy tôi sẽ tiếp tục sử dụng các thẻ cho các khối lớn và bắt đầu sử dụng "echo" cho các đoạn ngắn. – Migs

+0

Tôi đồng ý với tình cảm của mỗi dự án. Nếu bạn có nhiều PHP và thẻ HTML không thường xuyên, hãy sử dụng thẻ cũ. Nhưng nếu bạn có nhiều HTML và lệnh PHP không thường xuyên, hãy sử dụng lệnh sau (sử dụng HTML và gắn thẻ PHP vào đây và ở đó); nó * nên * nhanh hơn vì các thẻ đã có sẵn như các chữ trong khi in chúng có nghĩa là truyền các thẻ dưới dạng các chuỗi đến hàm in/echo, sau đó in chúng ra. Điều này có thể thêm cho một trang HTML chủ yếu, nhưng sẽ không nhiều cho một trang PHP chủ yếu. – Synetech

Trả lời

5

Thứ nhất có thể đọc được nhiều hơn trong quan điểm của tôi, tuy nhiên, kỹ thuật thứ hai liên quan đến việc phân tích cú pháp ít hơn. Bất kỳ lợi thế tốc độ nào trong trường hợp đó có thể sẽ nhỏ và thực sự vô nghĩa nếu không có hồ sơ.

Tối ưu hóa sớm là gốc rễ của mọi điều ác. Làm những gì làm cho mã dễ đọc và duy trì nhất. Hiệu quả mất một ghế sau để bảo trì.

xem http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize để được tư vấn tốt về chủ đề

2

Tốt nhất là công cụ tạo mẫu. Tuy nhiên, tôi nghĩ rằng echo là cách sạch hơn và dễ đọc hơn (ít nhất là trong trường hợp này - như đã chỉ ra trong ý kiến, nó phụ thuộc), hơn là mở và đóng thẻ ở khắp mọi nơi (tôi không biết quá nhiều về PHP internals). để biết cái nào nhanh hơn).

+1

Khả năng đọc phụ thuộc rất nhiều vào số lượng văn bản được phát ra thông qua 'echo', imho. Đối với một dòng duy nhất đóng và mở các thẻ PHP là quá mức cần thiết ... cho một hàng bảng đầy đủ với, giống như, 20 cột, đó là một câu chuyện khác nhau. Các trình soạn thảo văn bản cũng có thể làm nổi bật HTML bên ngoài các thẻ PHP nhưng thường không nằm trong các chuỗi PHP. Một lần nữa, đó chủ yếu là một vấn đề nếu có * nhiều * đánh dấu cần được phát ra. – Joey

+0

Tôi vẫn nghĩ rằng công cụ tạo mẫu tốt nhất cho điều đó. :) Nhưng bạn nói đúng. –

+2

IMHO, nếu bạn sử dụng một số loại động cơ MVC (và bạn thực sự cần), hệ thống mẫu là hoàn toàn vô ích. Từ những gì tôi đã thấy trong thực tế, các hệ thống mẫu được sử dụng bởi các nhà thiết kế web, những người không biết đủ PHP để hiểu được mã nào hoặc bởi các lập trình viên nào chưa khám phá ra mô hình MVC. –

2

Nó rất đáng tin cậy những gì bạn viết. PHP có thể được sử dụng làm ngôn ngữ lập trình hoặc bằng ngôn ngữ mẫu web đơn giản và mạnh mẽ. Việc trộn lẫn hai tập quán này thực hành rất, rất tệ và sẽ rất kinh khủng để hỗ trợ trong dài hạn.

Vì vậy, kiểu thứ hai có thể sử dụng được trong các mẫu có nhiều đánh dấu html và ít điểm mã, trước tiên - cho lập trình php 'rõ ràng'.

8

Lợi ích của việc đầu tiên một

  • dễ dàng hơn để đọc
  • ???

Lợi ích của việc thứ hai

  • WYSIWYG là thể
  • HTML Code Completion/Tag-Matching thể xảy ra với một số IDE
  • Không thoát đau đầu
  • dễ dàng hơn cho khối lớn hơn của HTML

Nếu tôi có nhiều HTML trong một thói quen PHP nhất định (như một khung nhìn MVC) thì tôi chắc chắn sử dụng phương thức thứ 2. Nhưng tôi định dạng nó một cách khác nhau - tôi hoàn toàn dựa vào tính chất giống như thẻ của các ranh giới của PHP, tức là, Tôi làm cho các phần PHP trông như giống như các thẻ HTML như tôi có thể

<table> 
    <?php foreach($lotsofrows as $row) { ?> 
    <tr> 
    <td><?php echo $row['id']; ?></td> 
    </tr> 
    <?php } ?> 
</table> 
+0

Tôi thích điều này thậm chí còn tốt hơn câu trả lời của riêng tôi, vì vậy +1 từ tôi :) –

2

Đầu tiên là dễ đọc hơn từ quan điểm lập trình của xem, nhưng một trong những thứ hai cho phép bạn mở các tập tin trong một số trình soạn thảo WYSIWYG HTML và thay đổi thiết kế trang.

tôi thích lựa chọn thứ hai vì nó là dễ dàng hơn để nói với nhà thiết kế của bạn rằng "phần này của trang sẽ cư xử như thế", hơn là "đoạn mã này không rằng"

+0

+1, giải pháp thứ hai làm cho cuộc sống dễ dàng hơn với các nhà thiết kế không biết PHP và không muốn học. Tuy nhiên, giải pháp tối ưu sẽ là các mẫu, nhưng ... –

7

Tôi đồng ý với Peter Bailey. Tuy nhiên, trong quan điểm tôi sử dụng cú pháp thay thế cho các câu lệnh, và rất thích các thẻ ngắn (đặc biệt là để lặp lại). Vì vậy, ví dụ trên thay vào đó sẽ đọc:

<table> 
    <? foreach($lotsofrows as $row): ?> 
    <tr> 
    <td><?= $row['id']; ?></td> 
    </tr> 
    <? endforeach; ?> 
</table> 

Tôi tin rằng đây là tiêu chuẩn được ưu tiên cho khung công tác Zend.

+0

Bạn đã đến đó trước tôi;) Đây là cú pháp tôi sử dụng hầu hết thời gian (mặc dù tôi đã đặt điều đó cho phép trên dòng riêng của mình). – DisgruntledGoat

+0

Xin chào voidstate, tôi thường tránh các thẻ ngắn vì cụm từ tài liệu: "Sử dụng các thẻ ngắn nên tránh khi phát triển các ứng dụng hoặc thư viện có nghĩa là phân phối lại" nhưng sau đó một lần nữa, cộng đồng đã nói với hầu hết các phiếu bầu, tôi đã bỏ lỡ chưa? – Migs

+0

Tôi làm việc ở đâu Tôi có quyền kiểm soát các máy chủ, vì vậy nó không phải là vấn đề đối với tôi và nó khiến cho IMO dễ đọc hơn nhiều. Đây là tài liệu Zend Framework: http://framework.zend.com/manual/en/zend.view.html # zend.view.introduction.shortTags Nó gợi ý việc thay đổi cài đặt php_ini trong tệp .htaccess bằng cách sử dụng như sau: php_value "short_open_tag" "trên" – voidstate