10/10/2018, 10:52

[PHP] Tại sao dùng Template Engine?

Tớ thấy thế này. Tại sao người ta hay dùng Template Engine? Có người bảo để tách code xử lý PHP ra khỏi HTML. Cái ý kiến này rất hay. Mô hình của nó là

PHP -> Template Engine -> HTML

Nhưng thật sự chúng ta củng có thể tách code PHP ra khỏi HTML mà chẳng cần TE mà? Thay vì parse thì chúng ta chỉ cần include là xong. Còn cái nữa dùng TE thì chúng ta phải trải qua 1 số thao tác assign variables rất mệt mỏi.

Why? có ai có giải thích hợp lý hơn không?
thuyduongcd viết 12:56 ngày 10/10/2018
Thay vì parse thì chúng ta chỉ cần include là xong
Cho ví dụ thử xem thế nào
phuongthom viết 12:55 ngày 10/10/2018
Được gửi bởi ichuot
Tớ thấy thế này. Tại sao người ta hay dùng Template Engine? Có người bảo để tách code xử lý PHP ra khỏi HTML. Cái ý kiến này rất hay. Mô hình của nó là

PHP -> Template Engine -> HTML

Nhưng thật sự chúng ta củng có thể tách code PHP ra khỏi HTML mà chẳng cần TE mà? Thay vì parse thì chúng ta chỉ cần include là xong. Còn cái nữa dùng TE thì chúng ta phải trải qua 1 số thao tác assign variables rất mệt mỏi.

Why? có ai có giải thích hợp lý hơn không?
cái TE này có phải assign var viếc gì đâu
http://ddth.com/showpost.php?p=2365790&postcount=16
FeS viết 13:02 ngày 10/10/2018
Dùng TE để làm gì trong khi PHP được tạo ra với mục đích là để nhúng vào HTML ?
Phân tách business logic code và presentation code là đủ rồi, có cần phải chơi kiểu nazi lọc cả PHP ra khỏi HTML ?
TE rốt cuộc cũng phải dịch qua PHP code, vậy sao ko dùng luôn echo ?
ichuot viết 13:01 ngày 10/10/2018
file abc.php
Code:
<?php
	
	$USER[0] = array(
		'user_name'		=> 'admin',
		'fullname'		=> 'Tan Thanh'
	};
	$USER[1] = array(
		'user_name'		=> 'user',
		'fullname'		=> 'Minh Tuan'
	};
	
	include 'abc.html';
?>
file abc.html
Code:
<table>
	<tr>
		<th>User Name</th>
		<th>Full Name</th>
	</tr>
	<?php if (is_array($USER)) : ?>
	<?php foreach ($USER as $key => $row) : ?>
	<tr>
		<td><?php echo $row['user_name']; ?></td>
		<td><?php echo $row['fullname']; ?></td>
	</tr>
	<?php endforeach; ?>
	<?php else : ?>
	<tr>
		<td colspan="2">...</td>
	</tr>
	<?php ?>
</table>
Cùng với mục đích trên. Ta xét Savants - 1 Template System được cho là nhanh!

file abc.php
Code:
<?php

	require_once 'Savant3.php';
	$tpl = new Savant3();
	
	$USER[0] = array(
		'user_name'		=> 'admin',
		'fullname'		=> 'Tan Thanh'
	};
	$USER[1] = array(
		'user_name'		=> 'user',
		'fullname'		=> 'Minh Tuan'
	};
	
	$tpl->users = $USER;
	
	$tpl->display('abc.html');
?>
file abc.html
Code:
<table>
	<tr>
		<th>User Name</th>
		<th>Full Name</th>
	</tr>
	<?php if (is_array($this->users)): ?>
	<?php foreach ($this->users as $key => $row) : ?>
	<tr>
		<td><?php echo $row['user_name']; ?></td>
		<td><?php echo $row['fullname']; ?></td>
	</tr>
	<?php endforeach; ?>
	<?php else : ?>
	<tr>
		<td colspan="2">...</td>
	</tr>
	<?php ?>
</table>
Ta xet Smarty con rối hơn thế nữa...
...
Có phải ta đang tự làm khổ mình?
anhchanghaudau viết 13:07 ngày 10/10/2018
Được gửi bởi FeS
Dùng TE để làm gì trong khi PHP được tạo ra với mục đích là để nhúng vào HTML ?
Phân tách business logic code và presentation code là đủ rồi, có cần phải chơi kiểu nazi lọc cả PHP ra khỏi HTML ?
TE rốt cuộc cũng phải dịch qua PHP code, vậy sao ko dùng luôn echo ?
Học C++, Pascal, VB cuối cùng dịch qua Assembly sao ta không học Assembly, hay Assembly vẫn phải dịch qua mã máy, sao ta không học mã máy, dùng TE để dễ modify, phân tách cấu trúc, phân chia công việc, muốn thay giao diện, một anh designer biết cú pháp TE đơn giản là làm được, chứ đâu phải việc gì anh coder cũng phải làm. Viết echo thì hơi bị choáng nếu trong trang có hàng trăm chỗ echo. Đem một ví dụ đơn giản từa tựa như in ra câu Hello World và nói dùng lệnh echo vừa ngắn vừa dễ hiễu hơn Smarty thì e rằng không ổn.
FeS viết 13:02 ngày 10/10/2018
Được gửi bởi anhchanghaudau
Học C++, Pascal, VB cuối cùng dịch qua Assembly sao ta không học Assembly, hay Assembly vẫn phải dịch qua mã máy, sao ta không học mã máy, dùng TE để dễ modify, phân tách cấu trúc, phân chia công việc, muốn thay giao diện, một anh designer biết cú pháp TE đơn giản là làm được, chứ đâu phải việc gì anh coder cũng phải làm. Viết echo thì hơi bị choáng nếu trong trang có hàng trăm chỗ echo. Đem một ví dụ đơn giản từa tựa như in ra câu Hello World và nói dùng lệnh echo vừa ngắn vừa dễ hiễu hơn Smarty thì e rằng không ổn.
C++, Pascal là compiled language nên speed đánh đổi với maintainable là điều đáng giá, ko cần phải bàn.
Nhưng với PHP thì khác nó là interpreted language nên tốc độ thua compiled language rất rất nhiều.

Thay vì phải học một mớ cú pháp hỗn tạp của TE sao ko học luôn vài lệnh kết xuất php cho thuần túy ?
Với cách sắp đặt của phần lớn application framework như hiện giờ thì chẳng có lý do gì để dùng TE. PHP bản chất là scripting đã chậm, giờ phải qua một lần interpret --> rốt cuộc cũng chỉ là PHP --> Overhead ko đáng có.

Trước đây trong này bác pcdinh cũng đã phân tích về vấn đề TE và nhiều người cũng đồng ý với quan điểm này. Tóm lại ai muốn overhead thừa thãi thì cứ dùng
bka viết 13:05 ngày 10/10/2018
Được gửi bởi FeS
C++, Pascal là compiled language nên speed đánh đổi với maintainable là điều đáng giá, ko cần phải bàn.
Nhưng với PHP thì khác nó là interpreted language nên tốc độ thua compiled language rất rất nhiều.

Thay vì phải học một mớ cú pháp hỗn tạp của TE sao ko học luôn vài lệnh kết xuất php cho thuần túy ?
Với cách sắp đặt của phần lớn application framework như hiện giờ thì chẳng có lý do gì để dùng TE. PHP bản chất là scripting đã chậm, giờ phải qua một lần interpret --> rốt cuộc cũng chỉ là PHP --> Overhead ko đáng có.

Trước đây trong này bác pcdinh cũng đã phân tích về vấn đề TE và nhiều người cũng đồng ý với quan điểm này. Tóm lại ai muốn overhead thừa thãi thì cứ dùng
chuẩn rồi.. smarty giờ là dĩ vãng
freshgraduate09 viết 13:08 ngày 10/10/2018
đi làm công ăn lương thì lai ko có sự lựa chọn, ai kêu dùng gì thì dùng đó thôi
Hanaziki viết 12:59 ngày 10/10/2018
Có lẽ bác cũng sẻ đi vào dĩ vãng luôn thôi ...
Bài liên quan
0