<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>$i-&#62;php(); &#187; Drupal</title>
	<atom:link href="http://i-php.net/category/drupal/feed/" rel="self" type="application/rss+xml" />
	<link>http://i-php.net</link>
	<description>Hãy tiết kiệm điện và sử dụng opensource để bảo vệ môi trường</description>
	<lastBuildDate>Fri, 26 Feb 2010 07:29:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sự tàn lụi của PHP</title>
		<link>http://i-php.net/2009/04/php-down/</link>
		<comments>http://i-php.net/2009/04/php-down/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 09:41:47 +0000</pubDate>
		<dc:creator>hoangnd</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[down]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=404</guid>
		<description><![CDATA[Mặc định rằng các bạn đang đọc bài này là những người làm trong ngành nên tôi sẽ không giải thích hay ghi chú những khái niệm phổ thông. Mặt khác, lý lẽ trong bài viết này chỉ phản ánh quan điểm của cá nhân tôi, không đại diện cho ai hay tổ chức nào [...]]]></description>
			<content:encoded><![CDATA[<p>Mặc định rằng các bạn đang đọc bài này là những người làm trong ngành nên tôi sẽ không giải thích hay ghi chú những khái niệm phổ thông. Mặt khác, lý lẽ trong bài viết này chỉ phản ánh quan điểm của cá nhân tôi, không đại diện cho ai hay tổ chức nào khác.</p>
<p>&#8212;</p>
<p>Lịch sử ngành công nghiệp máy tính &amp; mạng đã chứng minh PHP là một trong số những ngôn ngữ mạnh &amp; linh động nhất trên nền Web và cũng không quá khó để thành thục ở mức phổ thông. Được phát triển và biết đến từ những năm cuối của thập kỷ trước, PHP đã đạt được sự tăng trưởng đáng kinh ngạc so với các ngôn ngữ lập trình khác.</p>
<p> </p>
<div class="wp-caption aligncenter" style="width: 443px"><a href="http://hoang188.net/"><img class=" " title="PHP timeline" src="http://hoang188.net/files/php-timeline.png" alt="PHP Timeline" width="433" height="231" /></a><p class="wp-caption-text">PHP Timeline</p></div>
<p> </p>
<p> </p>
<p>Nhìn biểu đồ trên, ta thấy con đường đi lên của PHP là theo hướng phát triển truyền thống, tức là <strong>Thiết kế -&gt; sử dụng -&gt; chỉnh sửa -&gt; lớn mạnh -&gt; phát triển</strong>. Điều thú vị là cho đến nay, rất nhiều các sản phẩm được phổ biến rộng rãi cũng đi theo con đường trên như các nền tảng .NET, Java hay Linux.</p>
<p>Ta lần lượt điểm qua một số điểm mẫu chốt sau</p>
<p><strong>Vòng đời</strong></p>
<p>Một lần nữa, nhắc lại thế mạnh của PHP trên nền web chính là tốc độ (phát triển &amp; thực thi), nhẹ &amp; dễ học. Bên cạnh đó, do đặc tính mã nguồn mở (theo <a href="http://en.wikipedia.org/wiki/PHP_License">giấy phép PHP</a>) cũng như sự đổi mới về phong cách khi ra đời, PHP sở hữu rất nhiều thứ quý giá</p>
<p> </p>
<ul>
<li>Cộng đồng lớn. Khoản này vô đối. Luôn có những guru sẵn sàng chia sẻ kinh nghiệm &amp; kiến thức, hướng dẫn những người mới và giải đáp thắc mắc.</li>
<li>Thư viện, cả nội tại và mở rộng của PHP, có chứa số lượng function cực lớn được đóng góp bởi những người tình nguyện. Con số vào khoảng 700 buit-in functions và uncountable external functions (hoangnd tính toán).</li>
<li>Framework đa dạng về số lượng cũng như chất lượng, thậm chí đa dạng cả về <span style="text-decoration: underline;">mô hình</span> và <span style="text-decoration: underline;">mục đích sử dụng.</span></li>
</ul>
<p> </p>
<p><strong>Sự mở rộng và phát triển</strong></p>
<p> </p>
<ul>
<li>Khái niệm về namespace. .NET đã có từ lâu, Java cũng có khái niệm package gần tương đương, và bây giờ chúng ta chứng kiến PHP. Đành rằng namespace ra đời với mục đích cơ bản là giúp lập trình viên dễ tổ chức và quản lý code hơn, nhưng với PHP thì tôi cho rằng là một sự ôm đồm. Mặc dù có rất nhiều những giải thích về cách gõ namespace trong PHP, nhưng thực sự là rất khó chấp nhận ký tự &#8220;\&#8221; để phân cách.  <span style="text-decoration: underline;">Thứ nhất</span>  là hơi va chạm với tư tưởng chạy đa nền của PHP vì ký tự &#8220;\&#8221; được dùng phổ biến trong windows để phân tách đường dẫn. <span style="text-decoration: underline;">Thứ hai</span> là có vẻ như PHP đã sử dụng cạn kiệt tài nguyên bàn phím. </li>
<li>PHP cho đến nay đã quá rộng lớn và các lập trình viên dễ dàng tìm được nhiều giải pháp khác nhau cho cùng một bài toán. Điều này thể hiện rất rõ ràng tư tưởng &#8220;open and share&#8221; mà nhờ nó, nhân loại mới có được kho tri thức khổng lồ (không chỉ trong ngành khoa học máy tính mà còn ở tất cả các lĩnh vực khác). Tuy nhiên, hãy nhìn Python làm, bạn có rất ít những cách để xử lý một vấn đề và thường thì những cách đó luôn là cách tốt nhất và dễ dàng nhất cho bạn, đến nỗi bạn chả buồn nghĩ tới hướng khác <img src='http://i-php.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Ở phía đối diện, .NET độc quyền gắn chặt với hệ điều hành Window$ của Micro$oft nhưng có sự thống nhất, rõ ràng và ổn định cực tốt (nếu bạn chọn phát triển trên nền tảng này).</li>
</ul>
<p> </p>
<p><strong>Yahoo và facebook xài PHP</strong></p>
<p>Quá đúng, bỏ qua phần backend thì chính những đoạn mã  PHP đã dựng lên bộ mặt yahoo &amp; facebook như bây giờ. Và nó đã chứng minh giá trị của mình khi cả Yahoo &amp; facebook đều đã hoặc đang trở thành những đế chế internet với danh tiếng, lợi nhuận &amp; lượng người dùng cực lớn, chưa kể đến số lượng các dịch vụ kèm theo.</p>
<p>Thế nhưng, trong các đăng báo tuyển dụng, họ luôn muốn <span style="text-decoration: underline;">ưu tiên những ứng viên biết thêm Perl hoặc Python</span> bên cạnh thành thạo PHP (bỏ qua các yêu cầu khác). Câu hỏi đặt ra là, họ (yahoo &amp; facebook) định cho những ứng viên này làm cả ở nền tảng trên &amp; dưới của hệ thống web application? hay họ muốn những ứng viên đó có được <span style="text-decoration: underline;">tư duy ngôn ngữ </span>của perl, python? hay nữa là họ muốn dự phòng và sẵn sàng chuyển đổi sang perl, python? (lol)</p>
<p><strong>Đặc điểm</strong></p>
<p>Một chút hình dung</p>
<p><a href="http://hoang188.net"></a><a href="http://hoang188.net"><img class="alignleft" title="PHP-Python-Flex" src="http://hoang188.net/files/open.png" alt="" width="273" height="296" /></a><br />
<img class="aligncenter" title=".NET" src="http://hoang188.net/files/net-bo.png" alt="" width="292" height="308" /></p>
<p>Có nghĩa lý gì? Ai cũng biết .NET là một nền tảng còn PHP là một ngôn ngữ lập trình, tất nhiên sẽ là không hợp lý nếu so sánh chúng với nhau. Cái tôi muốn đề cập là, với .NET chúng ta có thể sử dụng để lập trình web, windows application, mobile, embedded, cloud &#8230; với sự tách biệt không quá lớn dành cho lập trình viên (tất nhiên môi trường triển khai thì không nói). Còn PHP không thể đứng một mình, nó sẽ kết hợp với các công nghệ khác tạo thành những nền tảng thực thi bài toán, mà chất lượng kết quả bài toán đó phụ thuộc rất nhiều vào kinh nghiệm &amp; kiến thức của kiến trúc sư trưởng dự án. Sợi dây liên kết này tôi cho rằng là kém vững trãi hơn so với .NET</p>
<p>Ngoài ra, mô hình trên còn thể hiện một nội dung khác. Nếu coi mỗi ngôn ngữ là một tập thông tin thì chúng liên kết với nhau qua giao của những tập đó. Có nghĩa là PHP sẽ đứng chung với python, perl, ruby &#8230; Và cũng có nghĩa là tôi sẽ chọn python thay vì PHP để kết hợp với flex. Tức là PHP đã mất đi một người dùng là tôi, ít nhất là trong dự án nào đó.</p>
<p><span style="text-decoration: line-through;">Buồn ngủ quá nên đoạn này viết hơi sơ sài và lung tung, sẽ cập nhật lại sớm thôi</span></p>
<p><span style="font-weight: bold;">Tuy nhiên</span></p>
<p>Các lập trình viên PHP đừng quá buồn và suy nghĩ nhiều làm gì, PHP đã, đang và sẽ luôn làm rất tốt trong phân khúc thị trường của nó. Và trong 1, 2, 3 năm nữa có thể ta có PHP phiên bản 6.0, 6.1, 6.2 &#8230; nhưng rồi nó sẽ phát triển tiếp thành cái gì? Cộng đồng không có nhiều người biết, tôi cá là bạn không biết, còn <span style="color: #800000;">tất nhiên là tôi không biết</span> roài. <img src='http://i-php.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>(just my cent at 3 a.m)</p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/04/php-down/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Cách viết Module, Hook trong Drupal</title>
		<link>http://i-php.net/2009/02/cach-vi%e1%ba%bft-module-hook-trong-drupal/</link>
		<comments>http://i-php.net/2009/02/cach-vi%e1%ba%bft-module-hook-trong-drupal/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 16:12:43 +0000</pubDate>
		<dc:creator>chaubl</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[module]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=370</guid>
		<description><![CDATA[1. Module trong Drupal :
Cấu trúc của một module có thể gồm nhiều tập tin khác nhau, nhưng phải có ít nhất một tập tin tên_module.info và một tập tin tên_module.module, tên này không được trùng với các module đã tồn tại trong hệ thống.
Tạo file *.info:
Cấu trúc của một tập tin *.info có dạng:
- [...]]]></description>
			<content:encoded><![CDATA[<p>1. <strong>Module trong Drupal :</strong></p>
<p>Cấu trúc của một module có thể gồm nhiều tập tin khác nhau, nhưng phải có ít nhất một tập tin tên_module.info và một tập tin tên_module.module, tên này không được trùng với các module đã tồn tại trong hệ thống.<br />
Tạo file <span style="font-weight: bold;">*.info</span>:<br />
Cấu trúc của một tập tin *.info có dạng:<br />
-  Name = tên của module, bắt buộc phải có.<br />
-  Description = mô tả các chức năng của module, bắt buộc phải có.<br />
-  Version = phiên bản của module.<br />
-  Package = nhóm các chức năng của module, nếu không khai báo package thì module được đưa vào nhóm “other”.</p>
<p>- Dependencies = các module phụ thuộc, cách nhau bằng khoảng trống. Nếu module được yêu cầu chưa được bật trên hệ thống thì module này không thể bật được.</p>
<p>Tạo file <span style="font-weight: bold;">*.module</span>:<br />
+  Bắt đầu và kết thúc với thẻ <span style="font-weight: bold;">&lt;?php </span> ?&gt;<br />
+ Chúng ta có thể ghi chú thích cho nhiều dòng sau dấu ‘/*’ và kết thúc ghi chú dùng dấu ‘*/’, chú thích cho một dòng dùng dấu ‘//’.<br />
+ Viết code: viết các hook mà chúng ta cần xử lý.</p>
<p><strong>2. Hook trong Drupal :</strong></p>
<p>Hook được xem như là các sự kiện (event) bên trong bộ nhân Drupal. Hook được gọi là các hàm callbacks, đây là cách phổ biến nhất để tương tác với nhân Drupal. Module sử dụng hook để tương tác với hệ thống. Mỗi hook có tham số và giá trị trả về nhất định. Một hook là một hàm PHP được đặt tên theo dạng: <span style="font-weight: bold;">codepro_user()</span>, trong đó <span style="font-weight: bold;">codepro</span> là tên của module còn <strong>user </strong>là tên của hook. Mỗi hook sẽ có những thông số đầu vào khác nhau và trả về các kết quả khác nhau.<br />
Tùy theo chức năng và mức độ phức tạp của module mà người thiết kế có thể sử dụng các hook thích hợp.</p>
<p>http://api.drupal.org/api/group/hooks/6</p>
<p><strong>VD: </strong>Tạo module demo, viết hook bắt sự kiện login, logout .</p>
<p>- Tạo folder demo trong folder modules.</p>
<p>-  Tạo 2 file demo.info, demo.module.</p>
<p>-  Viết function hook_user() trong demo.module.</p>
<pre class="php" name="code">&lt;?php
function hook_user($op, &amp;$edit, &amp;$account, $category = NULL)
{
if ($op == 'login' )
{
die("hook user login");
}
if ($op == 'logout' )
{
die("hook user logout ");
}
}
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/02/cach-vi%e1%ba%bft-module-hook-trong-drupal/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
