PHP Coding Tip: The print_r() Function
March 25th Information and Tutorials \ Web Development Here's a quick but extremely useful tip for PHP developers. When working on plugins or extensions for an existing framework, use the print_r() function on the API objects to find out what data structures they contain. Great PHP help tip.
{google_articles}
This function is a big help for Joomla! development. There really isn't much documentation for Joomla! 1.5. The basic framework is there, but examples are extremely basic and don't have the information I would expect from a top-notch open source product (which Joomla! certainly is). This means that a lot of your coding will be a trial and error process.
You can speed up this process by using PHP's print_r() function. Print_r() basically takes a variable, even something complex like an array of arrays, and prints it to the screen in a humanly redable format, helping you figure out what data the object contains and how you can use it.
I found it very helpful when creating the Joomla! 1.5 version of the Ultimate Social Bookmarking Plugin. This was my first Joomla! 1.5 extension and I needed to know what data the $article variable contained. I wrapped it with a set of <pre></pre> tags to automatically format the data. Example:
echo '<pre>'; print_r($article); echo '</pre>';
This simple chunk of PHP debugging code printed all of the information I needed to the screen. It told me exactly which fields existed within the $article object and what values they contained. I also learned that $article->alias only exists when the full content item is displayed, not on the homepage or blog/section/category listing pages. Here's an example output of the above code (with actual data values removed):
stdClass Object ( [id] => 0 [title] => title [alias] => alias [title_alias] => [introtext] => intro text [state] => 0 [sectionid] => 0 [mask] => 0 [catid] => 0 [created] => date [created_by] => 0 [created_by_alias] => [modified] => date [modified_by] => 0 [checked_out] => 0 [checked_out_time] => date [publish_up] => date [publish_down] => Never [images] => [urls] => [attribs] => atts [version] => 0 [parentid] => 0 [ordering] => 0 [metakey] => [metadesc] => [access] => 0 [hits] => 0 [metadata] => [author] => author [usertype] => permissions [category] => cat [section] => sec [slug] => slug [catslug] => catslug [groups] => groups [sec_pub] => 0 [cat_pub] => 0 [sec_access] => 0 [cat_access] => 0 [rating_count] => 0 [rating] => 0 [text] => main article text [parameters] => JParameter Object ( [_raw] => show_noauth=0 show_title=1 link_titles=0 show_intro=1 show_section=0 link_section=0 show_category=0 link_category=0 show_author=0 show_create_date=1 show_modify_date=0 show_item_navigation=0 show_readmore=1 show_vote=0 show_icons=1 show_pdf_icon=0 show_print_icon=0 show_email_icon=0 show_hits=0 feed_summary=0 [_xml] => [_elements] => Array ( ) [_elementPath] => Array ( [0] => /path ) [_defaultNameSpace] => _default [_registry] => Array ( [_default] => Array ( [data] => stdClass Object ( [show_noauth] => 0 [show_title] => 0 [link_titles] => 0 [show_intro] => 10 [show_section] => 0 [link_section] => 0 [show_category] => 0 [link_category] => 0 [show_author] => 0 [show_create_date] => 0 [show_modify_date] => 0 [show_item_navigation] => 0 [show_readmore] => 0 [show_vote] => 0 [show_icons] => 0 [show_pdf_icon] => 0 [show_print_icon] => 0 [show_email_icon] => 0 [show_hits] => 0 [feed_summary] => 0 [show_description] => 0 [show_description_image] => 0 [num_leading_articles] => 0 [num_intro_articles] => 0 [num_columns] => 0 [num_links] => 0 [show_pagination] => 0 [show_pagination_results] => 0 [show_feed_link] => 0 [html_title] => title [robots] => index, follow [show_page_title] => 0 [menu_image] => 0 [secure] => 0 [page_title] => title [page_description] => description [popup] => 0 ) ) ) [_errors] => Array ( ) ) [readmore_link] => /link.html )
{cbauthor}This full listing showed me everything available in the $article object. It gave me a much better understanding of how the backend of Joomla! 1.5 handles articles and what data was actually available to me. This information really couldn't have been found in any documentation, and it takes too long to get a response from an experienced developer at the Joomla! forums.
Overall, PHP's print_r() function is awesome for debugging and development when you are working with objects that you just don't know enough about. It saves a lot of time and frustration when trying to code in a new environment. Definitely a helpful function.
-
JoomlaImage.comJoomla Image - Photo albums and image galleries for Joomla -
Emergination.comGreat web apps with an emphasis on Open Source -
TooManyQuotes.comQuotes and sayings -
FellowFishermen.comFishing and angling -
PJSwesey.comP.J. Swesey's Blog -
JacksCouponCodes.comFree Coupon Codes -
LocalSEO.orgLocal SEO Services - Google Places Optimization -
AllTreatment.comArticles on Alcohol and Drug Addiction -
StackIdeas.comBest Blog Component for Joomla -
BurningTree.comInpatient Drug Rehab -
SuncoastHosting.com.auHosting solutions for Joomla based websites. first month for $1! 60 day money back guarantee! -
www.hostucan.comWeb Hosting Rating -
treatmentsolutionsnetwork.comAlcohol and Drug Treatment -
www.top-cheap-web-hosting.comBest Hosting -
DiversityMentoringUK.comCatalogues no credit check -
BuyNowPayLaterOnCredit.co.ukWeekly Payments -
BuyNowPayLaterFinance.co.ukLaptops for bad credit -
GlenFinnan.orgLaptops on credit -
JengaLoans.co.ukNo credit check loans -
LaptopComputerOnCredit.co.ukLaptop computers on credit -
UnsecuredLoansBadCreditNoCreditCheckMortgages.co.ukBad credit catalogues -
NocreditCheckBasicBankAccounts.co.ukWeekly payment stores
Member Statistics
- Total Members 47,114
- Guests Online 291
- Members Online 2
- Registered Today 28
- New This Week 121
- New This Month 287
Member Login
Latest Forum Posts
- Re: Lost all FB likes, tweets by cleani...
mark74 February 7th - Re: Like mashable.com
PJ February 6th - Re: Using with J2.5?
JeffP February 4th - Re: Facebook popup dispayed cut off
PJ February 1st - Re: NOT WORKING
PJ February 1st - Re: Twitter button does not shorten urls
adm1adm January 25th

