學東西,一般人都說要從基礎學起,可是我就是喜歡反過來,像倒吃甘蔗一樣,從我能接受的複雜東西玩起,再慢慢學回來。因為複雜的東西通常比較好玩,對我來說,學東西最快的方式,就是「讓我覺得好玩」。
反過來學習
所以,在我能夠接受Drupal的難懂和複雜之後,我就慢慢陷進去了,突破心牆,打開模組原始碼來研究已經是很普通的事情(對我這種不會寫程式的人來說,真的是跨出一大步啊!),然後也是後來才知道,這樣的程式寫作風格是類似JAVA,但我也不知道什麼是JAVA。
總之一切都是相反。
最基本的print_r()
但其實也是有壞處,那就是我最基本的東西很多都不懂。到最後,讓我驚奇連連的關鍵,居然會是最基本的東西。
那就是print_r()。
我在評估一個CMS好不好用的時候,都會很特別注意佈景、模版的彈性,因為能夠完全的客製化,才叫做好的系統嘛!而Drupal的Theming讓我滿痛苦的,原因上次已經抱怨過了(這邊),不過今天要說的是,print_r()以及db_fetch_object()真的很好用呢!
不論用什麼方式,只要把要的資料搞成一個物件,再用print_r()把這個物件印出來,像是這樣:
<?php
$type = 'blog';
$status = 1;
$sql = "SELECT * FROM {node} WHERE type = '%s' AND status = %d";
$result = db_query(db_rewrite_sql($sql), $type, $status);
while ($data = db_fetch_object($result)) {
$node = node_load($data->nid);
print_r($node);
?>這樣會跑出像這樣的東西。
這方法是hom教我的,真的很感謝。有興趣可以再看看那篇討論:「theme()的問題」。這東西目前是救過我幾次,不過也有人質疑,所以不一定是最好的工具。
順帶一提,在前後加上pre會更好閱讀。像這樣:
<?php
print '<pre>'. print_r($variable, TRUE) .'</pre>';
?>

Re: print_r()真是好東西
我的作法是:
drupal_set_message('<pre>' . print_r($var, true) . '</pre>');Re: print_r()真是好東西
噢!這樣就會在message的位置出現對吧!
的確不錯!