Đây có lẽ được coi là một câu hỏi thực sự ngớ ngẩn, nhưng tôi đang trong quá trình kết hợp một hệ thống mẫu đơn giản cho một trang web và đang cố gắng theo dõi việc sử dụng biến của tôi và giữ mọi thứ gọn gàng và gọn gàng.
Bạn có thể cho tôi biết nếu có bất kỳ lợi thế/bất lợi nào đối với các phương pháp sau:
đơn giản var:
$tpl_title = 'my title'
$tpl_desc = 'my text'
array:
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
Object:
$tpl->title = 'my title'
$tpl->desc = 'my text'
Tôi thích phương thức đối tượng tốt nhất vì nó trông sạch sẽ khi Echo'd trong HTML trái ngược với mảng và afaik nó có thể được sử dụng theo cách giống như mảng? Tuy nhiên, điều tôi muốn biết là liệu việc sử dụng các đối tượng theo cách này có được coi là thực hành xấu hay giới thiệu các chi phí không cần thiết?
George
Huy hiệu vàng 36K864 Huy hiệu bạc8 gold badges64 silver badges101 bronze badges
Đã hỏi ngày 20 tháng 3 năm 2013 lúc 10:52Mar 20, 2013 at 10:52
3
Trong các kịch bản lý tưởng, mọi biến nên thuộc về một đối tượng, ngoài các biến cục bộ cho các phương thức cho mục đích tạm thời. Tuy nhiên, chúng ta không sống trong một thế giới lý tưởng và đặc biệt là các ngôn ngữ lập trình của chúng ta là xa nó. Dựa trên tình hình là gì, hãy chọn cách tốt nhất để đi về nó để làm cho cuộc sống của bạn dễ dàng hơn. Nếu bạn đang sử dụng mọi thứ cho các mẫu, nói chung, bạn giữ tất cả dữ liệu trong một mảng và extract
Mảng để có được các biến độc lập.
Vì vậy, yeah, phương pháp đối tượng là tốt nhất, cố gắng làm cho nó xảy ra nhiều nhất có thể mà không dành thời gian điên rồ để làm điều đó.
Ngoài ra nếu bạn yêu thích các đối tượng và muốn có cách làm ->
gọn gàng, bạn có thể làm
$object = [object]$array;
Điều đó sẽ chuyển đổi mảng của bạn thành một đối tượng.
Hy vọng điều đó sẽ giúp.
Đã trả lời ngày 20 tháng 3 năm 2013 lúc 11:03Mar 20, 2013 at 11:03
Sabeen Maliksabeen MalikSabeen Malik
10,8K4 Huy hiệu vàng33 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges33 silver badges50 bronze badges
Tôi sẽ coi đó là chi phí không cần thiết. Làm những gì bạn đang nói theo cách hướng đối tượng chỉ có nghĩa là bên trong lớp của bạn, bạn sẽ không làm gì khác hơn là tạo ra một loạt các biến, giống như bạn đã chỉ định trong ví dụ đầu tiên của bạn.
Mảng là cách tốt nhất để đi theo quan điểm của tôi. Bạn chỉ sử dụng một biến và bạn cũng có thể tích hợp nó vào lớp của mình. Vì vậy, thay vì $tpl->title
, bạn có thể có
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
0.
người đàn ông thiếc
156K41 Huy hiệu vàng209 Huy hiệu bạc298 Huy hiệu Đồng41 gold badges209 silver badges298 bronze badges
Đã trả lời ngày 20 tháng 3 năm 2013 lúc 10:57Mar 20, 2013 at 10:57
DockeryzdockeryzdockeryZ
Phù hiệu vàng 3.9531 Huy hiệu bạc28 Huy hiệu đồng1 gold badge19 silver badges28 bronze badges
3
Mảng
Tôi sẽ đề xuất trên phần phụ trợ, giữ mọi thứ được lưu trữ trong một mảng. Điều này cho phép bạn chỉ có một biến để theo dõi và một khi bạn chuyển nó đến mặt trận, bạn có thể
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
1 mảng, để chuyển đổi chúng thành các biến đơn giản.Cú pháp
Sử dụng
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
1 đơn giản hóa cú pháp trên mặt trận, điều đó có nghĩa là bạn sẽ chỉ luôn có các biến số $ trong mẫu.Về phần phụ trợ, bạn sẽ đặt
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
3$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
3Mà một khi được trích xuất trong mẫu là
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
4$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
4Ví dụ về hàm phụ trợ
protected function fetch[$template, $data = null]
{
if [!$this->isTemplate[$template]] {
throw new Exception["Template file $this->_templatePath$template not found"];
}
ob_start[];
if [is_array[$data]] {
extract[$data, EXTR_SKIP];
}
require $this->_templatePath . $template . EXT;
return ob_get_clean[];
}
Đã trả lời ngày 20 tháng 3 năm 2013 lúc 10:58Mar 20, 2013 at 10:58
KaokaKao
2.2223 huy hiệu vàng22 Huy hiệu bạc31 Huy hiệu đồng3 gold badges22 silver badges31 bronze badges
Cuối cùng, chúng giống nhau, nó phụ thuộc vào sở thích, mặc dù tôi sẽ sử dụng các mảng hoặc đối tượng vì bạn có thể nhóm các biến trong đó, vì vậy bạn có những thứ được sắp xếp tốt hơn.
Mặc dù phương pháp đối tượng hoạt động, tôi nghĩ rằng nó không phải là mục đích sử dụng tự nhiên cho nó.
Vì vậy, tôi sẽ nói mảng!
Ngoài ra, có hàng tấn hàm gốc PHP bạn có thể sử dụng với các mảng, như
$tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
5 hoặc $tpl['title'] = 'my title'
$tpl['desc'] = 'my text'
6 Sắp xếp mảng và vv ...
Đã trả lời ngày 20 tháng 3 năm 2013 lúc 10:59Mar 20, 2013 at 10:59
Centernationalationaleation
4.7461 Huy hiệu vàng20 Huy hiệu bạc35 Huy hiệu Đồng1 gold badge20 silver badges35 bronze badges
Theo tôi, cách sạch nhất để thiết lập nó là trong mảng như thế này:
$tpl = array [
'title' => 'my title',
'desc' => 'my text'
];
Bạn cũng có thể kết hợp nó với câu trả lời của Zane.
Tất cả tốt nhất!
Đã trả lời ngày 20 tháng 3 năm 2013 lúc 11:04Mar 20, 2013 at 11:04
GorangoranGoran
3.1472 Huy hiệu vàng29 Huy hiệu bạc31 Huy hiệu Đồng2 gold badges29 silver badges31 bronze badges
$tpl = array [
'title' => 'my title',
'desc' => 'my text'
];
Giống như Goran đã nói, với phần thưởng mà bạn có thể lưu trữ các mảng này trong một tệp INI sau đó và trích xuất chúng khi cần thiết với parse_ini_file
Có thể quan trọng nếu bạn muốn cho phép người dùng ghi vào tệp INI của riêng họ.
Đã trả lời ngày 20 tháng 3 năm 2013 lúc 11:56Mar 20, 2013 at 11:56
CupscupCups
6,8413 Huy hiệu vàng26 Huy hiệu bạc 30 Huy hiệu Đồng3 gold badges26 silver badges30 bronze badges
Mảng và đối tượng rất hữu ích trong trường hợp nếu bạn muốn đặt lại phần lớn dữ liệu biến sau khi sử dụng.
Bạn chỉ có thể giải nén mảng hoặc phá hủy đối tượng thay vì không đặt ra phạm vi biến sử dụng trong mã.
Khác với các mảng và đối tượng này có nhiều đối xứng về mã và giải thích hơn các biến bình thường
Đã trả lời ngày 27 tháng 12 năm 2013 lúc 6:14Dec 27, 2013 at 6:14
Hasan Baighasan BaigHasan Baig
4916 Huy hiệu bạc17 Huy hiệu đồng6 silver badges17 bronze badges