Vì những người khác đã đề cập đến bộ đệm đầu ra có lẽ là giải pháp sạch nhất ở đây, bởi vì nó cho phép bạn tách mẫu HTML của bạn ra khỏi logic của bạn. Bằng cách này, bạn kết thúc với HTML khá dễ đọc trong tệp mẫu của mình, thay vì một mớ hỗn độn mã spaghetti.
function render_php[$path]
{
ob_start[];
include[$path];
$var=ob_get_contents[];
ob_end_clean[];
return $var;
}
Sau đó, tạo tệp mẫu của bạn
//test.php
Sau đó gọi chức năng của bạn:
render_php['test.php'];
Bạn thậm chí có thể làm cho điều này có thể tái sử dụng hơn bằng cách thêm một tham số thứ hai [một mảng hoặc đối tượng, tức là.
function render_php[$path,array $args]{
ob_start[];
include[$path];
$var=ob_get_contents[];
ob_end_clean[];
return $var;
}
Bây giờ hãy xem điều này hữu ích như thế nào
//create your template test.php
Bây giờ hãy tạo đối số của bạn và chuyển chúng cho phương thức kết xuất
$args = array['start' => 0, 'end' => 5];
render_php['test.php', $args];
Tại sao điều này hữu ích
Bây giờ bạn có một chức năng có thể tái sử dụng hữu ích, bất kể bạn cần phải truyền bao nhiêu đối số và logic của bạn có thể nằm trong một tệp riêng biệt từ màn hình của bạn, làm cho mã của bạn dễ đọc hơn rất nhiều. Chúng tôi có thể sử dụng điều này để xây dựng các khối HTML lớn vẫn dễ đọc.
i.e.
$article = array[ //imagine we have an article that we have pulled from our database
'title' => 'Some Title',
'subtitle' => 'Some Sub Title',
'body' => 'lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris
eu nulla quis ligula ornare ultricies. Vivamus malesuada lectus a mi
auctor pellentesque. Maecenas eu ultricies sapien, ac porta augue. ',
'image' => 'img/some_image.jpg'
];
echo render_php['article.php',array $article];
và tạo một mẫu
Một chức năng để hiển thị một tệp PHP với dữ liệu. Cho phép tạo khuôn mẫu và sau đó gửi một mảng dữ liệu vào chế độ xem.
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều
hàm renderphpfile [$ filename, $ vars = null] { | |
if [is_array [$ vars] &&! trống [$ vars]] { | |
Trích xuất [$ Vars]; | |
} | |
ob_start []; | |
Bao gồm $ fileName; | |
trả về ob_get_clean []; | |
} | |
// cách sử dụng | |
echo renderphpfile ['chế độ xem/mẫu/index.php', $ data_for_view]; |
Nhiều điều đã được nói về các tùy chọn khả năng tương tác Peachpie mở ra giữa mã PHP và .NET. Một trong những trường hợp sử dụng thực tế nhất là kết hợp các quan điểm một phần của dao cạo và PHP, đó là những gì mà bài viết ngày nay sẽ nói về. Tóm lại, mục tiêu của chúng tôi là tạo ra một cái gì đó như: @html.php [Nội dung.php,].@Html.Php[“content.php”]. Nói cách khác, chúng tôi muốn có chế độ xem dao cạo hoặc chế độ xem một phần [.cshtml] và hiển thị đầu ra của tập lệnh PHP bên trong. Chúng ta có thể tưởng tượng các tập lệnh PHP này là quan điểm một phần của dao cạo, nhưng được viết bằng PHP. Chúng ta hãy xem một trường hợp sử dụng rất thực tế, trong đó chúng ta tích hợp một ứng dụng PHP vào MVC của trang web - mã PHP đã xác định các thành phần và các phần HTML và chúng ta muốn sử dụng mã này trong trang web MVC ASP.NET Core mà không cần có để viết lại nó. Chúng tôi sẽ bắt đầu bằng cách nhờ ứng dụng của chúng tôi chạy trên Peachpie. Mã PHP hiện tại của chúng tôi được chuyển đổi thành một dự án .NET Core và tất cả nội dung của nó được biên dịch thành tệp .NET Core Standard Bắt đầu với phiên bản Peachpie Giới thiệu
.dll
. Từ thời điểm này trở đi, mọi thứ chúng tôi có trong PHP có thể được sử dụng trực tiếp trong thế giới của C# và .NET nói chung.Peachpie.AspNetCore.Mvc
0.9.0-CI01028
, chúng tôi đã bao gồm gói NUGET
0, bao gồm các phương thức mở rộng trợ giúp, nhờ vào ngày hôm nay, blog của Google là có thể.//test.php
Cấu hình
Để có thể hiển thị các tập lệnh PHP trong chế độ xem dao cạo, một số bước cần được thực hiện:
Trước hết, bạn cần biên dịch dự án PHP của mình với .NET bằng PeachPie; ví dụ. Như chúng tôi đã làm với WordPress hoặc MediaWiki. Lưu ý rằng
//test.php
1 phải là //test.php
2 và //test.php
3 là //test.php
4, bởi vì chúng tôi đang xây dựng một thư viện sẽ được tham chiếu bởi ứng dụng C# MVC của bạn.
Thêm một tham chiếu đến dự án MVC
.
[/code]
Trong bước cuối cùng, chúng ta phải nói với thời gian chạy rằng nó nên tìm kiếm các tập lệnh PHP được biên dịch trong
//test.php
5. Chúng ta phải làm điều này một lần khi ứng dụng đang chạy; Cách thanh lịch nhất là chèn mã vào đối tượng //test.php
6, cụ thể vào phương thức //test.php
7 trong cấu hình lõi ASP.NET. [CODE Language = Tiết csharp]] bối cảnh [/mã số][code language=”csharp”]
Context.AddScriptReference[ Assembly.Load["myPhpApp"] ];
[/code]
Kết xuất chế độ xem PHP trong chế độ xem dao cạo
Bây giờ chúng ta có thể quay lại đoạn trích ngắn trong phần giới thiệu: @html.php [Hồi Content.php,].@Html.Php[“content.php”].
Phương pháp
//test.php
8 là một phương thức mở rộng được xác định trong //test.php
9. Chế độ xem dao cạo [một phần] của chúng tôi sẽ trông như sau: [Ngôn ngữ mã = Tiết csharp,] @Using peachpie.aspnetcore.mvc;[code language=”csharp”]
@using Peachpie.AspNetCore.Mvc;
Chế độ xem dao cạo
@Html.php ["test.php"] [/code]
[/code]
Phương thức
render_php['test.php'];
0 thực sự thực hiện nhiều bước:- Nó tìm thấy các bài kiểm tra đã được biên dịch.php trong DLL của chúng tôi.
- Nó tạo ra hoặc sử dụng bối cảnh PHP hiện tại, đây là một đối tượng đại diện cho yêu cầu PHP được liên kết với đối tượng HTTPContext hiện tại.
- Nó bật bộ đệm đầu ra [
1] trên bối cảnh PHP.render_php['test.php'];
- Nó thực hiện một bao gồm của tập lệnh PHP.
- Nó tắt bộ đệm đầu ra [
2].render_php['test.php'];
- Nó đưa ra kết quả của tập lệnh PHP vào đối tượng
3 trong chế độ xem dao cạo hiện tại.render_php['test.php'];
Bạn có thể lấy toàn bộ mẫu từ [đây].
Người mẫu
Còn các đối tượng mô hình MVC thì sao? Nếu bạn muốn chuyển một số dữ liệu cho tập lệnh PHP, bạn có thể làm như vậy bằng cách chỉ định tham số thứ hai của phương thức
render_php['test.php'];
4. Bạn có thể vượt qua .NET render_php['test.php'];
5 hiện tại hoặc bất kỳ đối tượng nào khác. Để sử dụng nó, chỉ cần tham khảo biến render_php['test.php'];
6 trong mã PHP. Nếu bạn không thoải mái với việc sử dụng render_php['test.php'];
6, bạn có thể tận dụng API PeachPie và chuyển bất kỳ biến C# nào vào biến PHP toàn cầu. Đơn giản chỉ cần gọi một cái gì đó giống như. [/csharp]
HttpContext.GetOrCreateContext[].Globals["mydata"] = [PhpValue]"Hi from C#!";
[/csharp]
Mã này sẽ tạo ra biến toàn cầu PHP
render_php['test.php'];
8. render_php['test.php'];
9 là một phương thức mở rộng giúp bạn loại bỏ PHP ____30 trong số ASP.NET Core function render_php[$path,array $args]{
ob_start[];
include[$path];
$var=ob_get_contents[];
ob_end_clean[];
return $var;
}
1.Sự kết luận
Có nhiều trường hợp sử dụng thực tế của Peachpie tương tác PHP/C# cho phép. Kết xuất các tập lệnh PHP [như chế độ xem PHP] trong chế độ xem dao cạo, tuy nhiên, là một trong những bản tuyệt vời hơn. Nó cho phép tích hợp hoàn toàn liền mạch các chế độ xem PHP vào dao cạo và cũng cho việc di chuyển dần dần từ PHP sang .NET.
Hãy cho chúng tôi biết bạn nghĩ gì về khả năng này!
Đăng vào ngày 31 tháng 7 năm 2018, trong danh mục Thông tin, Tin tức, Hướng dẫn, Thẻ