2010-11-01 28 views
9

Tôi chỉ đọc suy nghĩ php doucmentation cho heredocs nhưng tôi không thấy bất kỳ cách nào để có ý định mã đúng cách. Điều này có thể trong php?PHP: Sử dụng Thụt lề phù hợp với Heredocs

Ngay bây giờ tôi đang làm điều này, nhưng điều này là xấu cho dễ đọc.

<?php 

     if(something){ 
      ... 
      echo <<< END  
        This is a test. I am writing this 
        text out. 
END; 
     } # end of if statment 

Tôi muốn có một cái gì đó như thế này:

<?php 

     if(something){ 
      ... 
      echo <<< END  
        This is a test. I am writing this 
        text out. 
      END; 
     } # end of if statment 

Tôi biết bash rằng có một phương pháp để làm điều này (mặc dù tôi không thể nhớ nó là gì), vì vậy tôi đã tự hỏi nếu nó là có thể làm trong php. Tôi không nghĩ vậy nhưng tôi nghĩ tôi sẽ hỏi.

Trả lời

7

Đó là một hạn chế của PHP để định dạng đúng báo cáo Heredoc. Đó là một hạn chế phân tích cú pháp. Như tiểu bang tài liệu:.

Điều rất quan trọng cần lưu ý là dòng với định đóng cửa phải không chứa ký tự khác, trừ có thể là một dấu chấm phẩy (;) Điều đó có nghĩa đặc biệt là t mà số nhận dạng của anh ấy có thể không được thụt lề và có thể không có bất kỳ dấu cách hoặc tab nào trước hoặc sau dấu chấm phẩy. Điều quan trọng là nhận ra rằng ký tự đầu tiên trước số nhận dạng đóng phải là dòng mới được xác định bởi hệ điều hành cục bộ. Đây là \ n trên hệ thống UNIX , bao gồm cả Mac OS X. Các dấu phân cách đóng (có thể theo sau bằng dấu chấm phẩy) cũng phải được theo sau bằng một dòng mới.

Nếu quy định này được chia và nhận dạng đóng cửa là không "sạch", nó sẽ không được coi là một định đóng cửa, và PHP sẽ tiếp tục tìm kiếm một. Nếu không tìm thấy số nhận dạng đóng hợp lệ trước khi kết thúc tệp hiện tại, một lỗi phân tích sẽ dẫn đến dòng cuối cùng.

Không rõ liệu điều này có được giải quyết trong tương lai của PHP hay không.

2

AFAIK, đó là không thể, bạn cần phải đặt đóng heredoc định danh mà không cần bất kỳ dấu/tab/thụt đầu dòng :(