10/10/2018, 11:12
xin các pro php giúp đỡ
Các anh cho em hỏi trong các function của joomla họ thường dùng tham chiếu(&) và em coi mã nguồn của Zend fw thì họ lại ko dùng cách viết này mà thường khi muốn dùng phải khởi tạo đối tượng mới
Vậy mình dùng tham chiếu thì có lợi gì,cám ơn các anh
Vậy mình dùng tham chiếu thì có lợi gì,cám ơn các anh
Bài liên quan
cám ơn anh
Xem vd sau
vd ta có
$x=1;
$x=2;
function testref(&$x1,$x2)
{
$x1++;
$x2++;
}
khi chạy testref($x1,$x2);
thì kết quả là $x1=2;$x2=2;
Còn em đọc sách về joomla thì nói là dùng để ko phải khởi tạo đối tượng 2 lần...ko biết là có lợi gì nữa?
Giả sử một hàm có một tham số là một object mà ta ko dùng tham chiếu thì mỗi khi hàm được gọi thì PHP sẽ phải copy toàn bộ instance của tham số này này vào một vùng nhớ mới để xử lý. Còn nếu dùng tham chiếu thì PHP sẽ dùng luôn instance của tham số này để thao tác (tức là chỉ truyền vào địa chỉ ô nhớ của tham số đầu vào). => Có thể là dùng tham chiếu thì PHP sẽ phải xử lý ít hơn và tránh việc khởi tạo các biến giống hệt nhau trong bộ nhớ (Bạn thử tưởng tượng xem một chương trình của bạn phải gọi bao nhiêu hàm thì sẽ thấy ý nghĩa của việc dùng tham chiếu)
$config =&JFactory::getConfig();//hàm getConfig sẽ lấy 1 thuộc tính trong jFactory trả ra,thuộc tính này lại là 1 đối tượng và là static(I think), và $config dùng tham chiếu đó nên ko phải tạo đối tượng 2 lần
echo 'Site name is ' . $config->getValue( 'config.sitename' );
Thay vì bạn phải
$config = $doi_config_cua_joomla;//rat nguy hiểm, vì có thể $doi_config_cua_joomla đã bị gán thành gì khác.//bạn có thể bắt gặp mô hình nguy hiểm này trong wordpress(best lightweight cms ).
Theo tớ thì hoàn toàn ko thể so sánh joomla với zend .
PS: Joomla có áp dụng mô hình singleton nên có những đối tượng chỉ dc phép khởi tạo 1 lần (bởi framework của joomla)..
Các bác chém nhẹ e thui nhá