您在這裡

print_r()真是好東西

hanamizuki's 的頭像
hanamizuki 在 2008-10-23 (四) 12:20 發表

筆記:print_r()真是好東西

學東西,一般人都說要從基礎學起,可是我就是喜歡反過來,像倒吃甘蔗一樣,從我能接受的複雜東西玩起,再慢慢學回來。因為複雜的東西通常比較好玩,對我來說,學東西最快的方式,就是「讓我覺得好玩」。

反過來學習

所以,在我能夠接受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 '

'. print_r($variable, TRUE) .'

';
?>

有 devel module的話
可以使用 dpm function, 效果和print_r 一樣、不過會把所有的資料output 在 drupal 訊息裡。

by the way, 樓上Joe的blog 很不錯:)

Best Regards, Jessie