<?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>Vadim Gabriel</title>
	<atom:link href="http://vadimg.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://vadimg.com</link>
	<description>Yet another blog</description>
	<lastBuildDate>Wed, 04 Apr 2012 00:05:46 +0000</lastBuildDate>
	<language>he</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Yiiframework CMS is now on Github</title>
		<link>http://vadimg.com/2012/04/03/yiiframework-cms-is-now-on-github/</link>
		<comments>http://vadimg.com/2012/04/03/yiiframework-cms-is-now-on-github/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 00:05:46 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[yii app]]></category>
		<category><![CDATA[yii application]]></category>
		<category><![CDATA[yii cms]]></category>
		<category><![CDATA[yiiframework]]></category>
		<category><![CDATA[yiiframework app]]></category>
		<category><![CDATA[yiiframework application]]></category>
		<category><![CDATA[yiiframework cms]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=1071</guid>
		<description><![CDATA[You can now fork the Yiiframework CMS source code from Github.Similar Posts USPS PHP API Wrapper &#124; Class Library &#8211; 03/30/2012 Atthevip.com code is now on github! &#8211; 03/02/2012 Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב &#8211; 03/21/2010 Yiiframework.co.il Code is now open sourced &#8211; 03/31/2011 אתר התמיכה עבור Yiiframework עלה &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>You can now fork the Yiiframework CMS source code from <a href="https://github.com/VinceG/yiiframework-cms" target="_blank">Github</a>.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/" rel="bookmark" title="03/30/2012">USPS PHP API Wrapper | Class Library</a> &#8211; 03/30/2012</li>
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/" rel="bookmark" title="03/21/2010">Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב</a> &#8211; 03/21/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2010/06/15/%d7%90%d7%aa%d7%a8-%d7%94%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%a2%d7%91%d7%95%d7%a8-yiiframework-%d7%a2%d7%9c%d7%94/" rel="bookmark" title="06/15/2010">אתר התמיכה עבור Yiiframework עלה</a> &#8211; 06/15/2010</li>
</ul>
<p><!-- Similar Posts took 6.327 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2012/04/03/yiiframework-cms-is-now-on-github/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>USPS PHP API &#8211; Usage Examples</title>
		<link>http://vadimg.com/2012/03/31/usps-php-api-usage-examples/</link>
		<comments>http://vadimg.com/2012/03/31/usps-php-api-usage-examples/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 00:49:14 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[usage]]></category>
		<category><![CDATA[usps]]></category>
		<category><![CDATA[usps api]]></category>
		<category><![CDATA[usps class]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=1064</guid>
		<description><![CDATA[After a few hours i&#8217;ve managed to clean everything up and provide some good usage examples. Check the project on Github to see some more information. Usage Examples Address Verify // Load the class require_once(&#039;../USPSAddressVerify.php&#039;); // Initiate and set the username provided from usps $verify = new USPSAddressVerify(&#039;xxxx&#039;); // During test mode this seems not [...]]]></description>
			<content:encoded><![CDATA[<p>After a few hours i&#8217;ve managed to clean everything up and provide some good usage examples. Check the <a href="https://github.com/VinceG/USPS-php-api" target="_blank">project on Github</a> to see some more information.</p>
<div style="margin-bottom:100px;"><!-- Break --></div>
<h2>Usage Examples</h2>
<h4>Address Verify</h4>
<div>
<p><pre class="brush: php">
// Load the class
require_once(&#039;../USPSAddressVerify.php&#039;);
// Initiate and set the username provided from usps
$verify = new USPSAddressVerify(&#039;xxxx&#039;);

// During test mode this seems not to always work as expected
//$verify-&gt;setTestMode(true);

// Create new address object and assign the properties
// apartently the order you assign them is important so make sure
// to set them as the example below
$address = new USPSAddress;
$address-&gt;setFirmName(&#039;Apartment&#039;);
$address-&gt;setApt(&#039;100&#039;);
$address-&gt;setAddress(&#039;9200 Milliken Ave&#039;);
$address-&gt;setCity(&#039;Rancho Cucomonga&#039;);
$address-&gt;setState(&#039;CA&#039;);
$address-&gt;setZip5(91730);
$address-&gt;setZip4(&#039;&#039;);

// Add the address object to the address verify class
$verify-&gt;addAddress($address);

// Perform the request and return result
print_r($verify-&gt;verify());
print_r($verify-&gt;getArrayResponse());

var_dump($verify-&gt;isError());

// See if it was successful
if($verify-&gt;isSuccess()) {
	echo &#039;Done&#039;;
} else {
	echo &#039;Error: &#039; . $verify-&gt;getErrorMessage();
}
</pre>
</p>
</div>
<h4>City/State Lookup By Zip Code</h4>
<div>
<p><pre class="brush: php">
// Load the class
require_once(&#039;../USPSCityStateLookup.php&#039;);

// Initiate and set the username provided from usps
$verify = new USPSCityStateLookup(&#039;xxxx&#039;);

// During test mode this seems not to always work as expected
//$verify-&gt;setTestMode(true);

// Add the zip code we want to lookup the city and state
$verify-&gt;addZipCode(&#039;91730&#039;);

// Perform the call and print out the results
print_r($verify-&gt;lookup());
print_r($verify-&gt;getArrayResponse());

// Check if it was completed
if($verify-&gt;isSuccess()) {
	echo &#039;Done&#039;;
} else {
	echo &#039;Error: &#039; . $verify-&gt;getErrorMessage();
}
</pre>
</p>
</div>
<h4>Zip Code Lookup By City &#038; State</h4>
<div>
<p><pre class="brush: php">
// Load the class
require_once(&#039;../USPSZipCodeLookup.php&#039;);

// Initiate and set the username provided from usps
$zipcode = new USPSZipCodeLookup(&#039;xxxx&#039;);

// During test mode this seems not to always work as expected
//$verify-&gt;setTestMode(true);

// Create new address object and assign the properties
// apartently the order you assign them is important so make sure
// to set them as the example below
$address = new USPSAddress;
$address-&gt;setFirmName(&#039;Apartment&#039;);
$address-&gt;setApt(&#039;100&#039;);
$address-&gt;setAddress(&#039;9200 Milliken Ave&#039;);
$address-&gt;setCity(&#039;Rancho Cucomonga&#039;);
$address-&gt;setState(&#039;CA&#039;);

// Add the address object to the zipcode lookup class
$zipcode-&gt;addAddress($address);

// Perform the call and print out the results
print_r($zipcode-&gt;lookup());
print_r($zipcode-&gt;getArrayResponse());

// Check if it was completed
if($zipcode-&gt;isSuccess()) {
	echo &#039;Done&#039;;
} else {
	echo &#039;Error: &#039; . $zipcode-&gt;getErrorMessage();
}
</pre>
</p>
</div>
<h4>Rate Calculator</h4>
<div>
<p><pre class="brush: php">
// Load the class
require_once(&#039;../USPSRate.php&#039;);

// Initiate and set the username provided from usps
$rate = new USPSRate(&#039;xxxx&#039;);

// During test mode this seems not to always work as expected
//$rate-&gt;setTestMode(true);

// Create new package object and assign the properties
// apartently the order you assign them is important so make sure
// to set them as the example below
// set the USPSRatePackage for more info about the constants
$package = new USPSRatePackage;
$package-&gt;setService(USPSRatePackage::SERVICE_FIRST_CLASS);
$package-&gt;setFirstClassMailType(USPSRatePackage::MAIL_TYPE_LETTER);
$package-&gt;setZipOrigination(91601);
$package-&gt;setZipDestination(91730);
$package-&gt;setPounds(0);
$package-&gt;setOunces(3.5);
$package-&gt;setContainer(&#039;&#039;);
$package-&gt;setSize(USPSRatePackage::SIZE_REGULAR);
$package-&gt;setField(&#039;Machinable&#039;, true);

// add the package to the rate stack
$rate-&gt;addPackage($package);

// Perform the request and print out the result
print_r($rate-&gt;getRate());
print_r($verify-&gt;getArrayResponse());

// Was the call successful
if($rate-&gt;isSuccess()) {
	echo &#039;Done&#039;;
} else {
	echo &#039;Error: &#039; . $rate-&gt;getErrorMessage();
}
</pre>
</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/" rel="bookmark" title="11/17/2010">PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</a> &#8211; 11/17/2010</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
<li><a href="http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/" rel="bookmark" title="03/30/2012">USPS PHP API Wrapper | Class Library</a> &#8211; 03/30/2012</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
</ul>
<p><!-- Similar Posts took 7.718 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2012/03/31/usps-php-api-usage-examples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USPS PHP API Wrapper &#124; Class Library</title>
		<link>http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/</link>
		<comments>http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 00:33:38 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[api]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[php class]]></category>
		<category><![CDATA[php library]]></category>
		<category><![CDATA[rates]]></category>
		<category><![CDATA[shipping]]></category>
		<category><![CDATA[shipping class]]></category>
		<category><![CDATA[state lookup]]></category>
		<category><![CDATA[usps]]></category>
		<category><![CDATA[usps api]]></category>
		<category><![CDATA[usps class]]></category>
		<category><![CDATA[usps library]]></category>
		<category><![CDATA[usps php]]></category>
		<category><![CDATA[usps php api]]></category>
		<category><![CDATA[usps rate]]></category>
		<category><![CDATA[usps rates]]></category>
		<category><![CDATA[usps wrapper]]></category>
		<category><![CDATA[wrapper]]></category>
		<category><![CDATA[zip code lookup]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=1061</guid>
		<description><![CDATA[Even through this is still a work in progress, and the USPS api does not work very well in test mode i&#8217;ve decided to share this since i was having hard time finding something that is reliable enough to use. You can check the code and examples that are present so far and comment. It appears that most [...]]]></description>
			<content:encoded><![CDATA[<p>Even through this is still a work in progress, and the USPS api does not work very well in test mode i&#8217;ve decided to share this since i was having hard time finding something that is reliable enough to use. You can check the code and examples that are present so far and comment. It appears that most of the functionality does not work in test mode so you&#8217;ll need to get production access to be able to actually use this properly. This is not specific to this API but rather a thing with the entire USPS API.</p>
<h2><a href="https://github.com/VinceG/USPS-php-api" target="_blank">Fork it on github</a></h2>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2012/03/31/usps-php-api-usage-examples/" rel="bookmark" title="03/31/2012">USPS PHP API &#8211; Usage Examples</a> &#8211; 03/31/2012</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2012/03/29/php-facebook-api-wrapper-updated-v-3-0-1/" rel="bookmark" title="03/29/2012">PHP Facebook API Wrapper Updated V 3.0.1</a> &#8211; 03/29/2012</li>
<li><a href="http://vadimg.com/2009/06/24/application-installer-wizard-class/" rel="bookmark" title="06/24/2009">Application Installer Wizard Class</a> &#8211; 06/24/2009</li>
</ul>
<p><!-- Similar Posts took 6.715 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Facebook API Wrapper Updated V 3.0.1</title>
		<link>http://vadimg.com/2012/03/29/php-facebook-api-wrapper-updated-v-3-0-1/</link>
		<comments>http://vadimg.com/2012/03/29/php-facebook-api-wrapper-updated-v-3-0-1/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 22:52:08 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[api]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook api]]></category>
		<category><![CDATA[open graph]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php sdk]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[facebook library]]></category>
		<category><![CDATA[facebook open graph]]></category>
		<category><![CDATA[facebook php]]></category>
		<category><![CDATA[facebook php api]]></category>
		<category><![CDATA[facebook php sdk]]></category>
		<category><![CDATA[facebook sdk]]></category>
		<category><![CDATA[facebook wrapper]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[graph api]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[php library]]></category>
		<category><![CDATA[php wrapper]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=1053</guid>
		<description><![CDATA[This minor update involves the following updates: Change Log 3.0.1 &#8211; 29/03/2012 Added Extending Access Token Added Getting Accounts Added Getting Ad Accounts Added Getting Activities Added Getting App Requests Added Getting Family Added Getting Friend List Added Getting Friend Requests Added Getting Games Added Getting Home Feed Added Getting Inbox Added Getting Outbox Added Getting Notifications [...]]]></description>
			<content:encoded><![CDATA[<h2>This minor update involves the following updates:</h2>
<div style="margin-top:150px;"><!-- break;--></div>
<h3>Change Log</h3>
<ul>
<li>3.0.1 &#8211; 29/03/2012
<ul>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#extendingaccesstoken">Extending Access Token</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Accounts">Getting Accounts</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Ad Accounts">Getting Ad Accounts</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Activities">Getting Activities</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting App Requests">Getting App Requests</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Family">Getting Family</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Friend List">Getting Friend List</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Friend Requests">Getting Friend Requests</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Games">Getting Games</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Home Feed">Getting Home Feed</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Inbox">Getting Inbox</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Outbox">Getting Outbox</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Notifications">Getting Notifications</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Statuses">Getting Statuses</a></li>
<li>Added <a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#Getting Tagged">Getting Tagged</a></li>
</ul>
</li>
</ul>
<div style="text-align: center;">
<h1>-&gt; <a title="Facebook API" href="http://vadimg.com/wp-content/uploads/2012/03/Facebook-API-3.0.1.zip" target="_blank">Click Here To Download Version 3.0.1</a> &lt;-</h1>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
<li><a href="http://vadimg.com/2009/08/25/ipb-sdk-v3-for-ipb-3/" rel="bookmark" title="08/25/2009">IPB SDK V3 FOR IPB 3</a> &#8211; 08/25/2009</li>
<li><a href="http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/" rel="bookmark" title="03/30/2012">USPS PHP API Wrapper | Class Library</a> &#8211; 03/30/2012</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
</ul>
<p><!-- Similar Posts took 7.738 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2012/03/29/php-facebook-api-wrapper-updated-v-3-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Facebook API Version 3.0 &#124; Facebook Wrapper &#124; Facebook Class</title>
		<link>http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/</link>
		<comments>http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 00:25:19 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[facebook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[facebook api]]></category>
		<category><![CDATA[facebook open graph]]></category>
		<category><![CDATA[facebook sdk]]></category>
		<category><![CDATA[facebook wrapper]]></category>
		<category><![CDATA[new facebook api]]></category>
		<category><![CDATA[new facebook open graph]]></category>
		<category><![CDATA[new facebook sdk]]></category>
		<category><![CDATA[open graph]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=1005</guid>
		<description><![CDATA[Following the previous PHP Facebook Wrapper i&#8217;ve decided to update it to the latest Facebook PHP SDK. You can download the class at the bottom of this post along with the actual facebook classes, examples and readme. I&#8217;ll cover the actual documentation in this post first then in the lower section you&#8217;ll be able to [...]]]></description>
			<content:encoded><![CDATA[<p>Following the previous <span style="text-decoration: underline;"><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" target="_blank">PHP Facebook Wrapper</a></span> i&#8217;ve decided to update it to the latest <span style="text-decoration: underline;"><a href="https://github.com/facebook/facebook-php-sdk" target="_blank">Facebook PHP SDK</a></span>. You can download the class at the bottom of this post along with the actual facebook classes, examples and readme.</p>
<p>I&#8217;ll cover the actual documentation in this post first then in the lower section you&#8217;ll be able to see some usage examples which are also included in the download file.</p>
<ul>
<li><a href="#init">Initiating Class</a></li>
<li><a href="#Login/Logout Option">Login/Logout Option</a></li>
<li><a href="#Getting user information">Getting user information</a></li>
<li><a href="#Getting user friends">Getting user friends</a></li>
<li><a href="#Getting user wall feed">Getting user wall feed</a></li>
<li><a href="#Getting user likes">Getting user likes</a></li>
<li><a href="#Getting user movies">Getting user movies</a></li>
<li><a href="#Getting user music">Getting user music</a></li>
<li><a href="#Getting user books">Getting user books</a></li>
<li><a href="#Getting user notes">Getting user notes</a></li>
<li><a href="#Getting user permissions">Getting user permissions</a></li>
<li><a href="#Getting user photo tags">Getting user photo tags</a></li>
<li><a href="#Getting user photo albums">Getting user photo albums</a></li>
<li><a href="#Getting user video tags">Getting user video tags</a></li>
<li><a href="#Getting user video uploads">Getting user video uploads</a></li>
<li><a href="#Getting user events">Getting user events</a></li>
<li><a href="#Getting user groups">Getting user groups</a></li>
<li><a href="#Getting user checkins">Getting user checkins</a></li>
<li><a href="#Getting user locations">Getting user locations</a></li>
<li><a href="#Adding new wall posts">Adding new wall posts</a></li>
<li><a href="#Adding new notes">Adding new notes</a></li>
<li><a href="#Adding new links">Adding new links</a></li>
<li><a href="#Adding new comments">Adding new comments</a></li>
<li><a href="#Adding new likes">Adding new likes</a></li>
<li><a href="#Adding new events">Adding new events</a></li>
<li><a href="#Adding new albums">Adding new albums</a></li>
<li><a href="#Adding new photos">Adding new photos</a></li>
<li><a href="#Adding new checkins">Adding new checkins</a></li>
<li><a href="#Attending an event">Attending an event</a></li>
<li><a href="#Maybe Attending an event">Maybe Attending an event</a></li>
<li><a href="#Declining an event">Declining an event</a></li>
<li><a href="#Searching">Searching</a></li>
<li><a href="#reset">Clearing Session / Resetting</a></li>
<li><a href='#extendingaccesstoken'>Extending Access Token</a> &#8211; 3.0.1</li>
<li><a href='#Getting Accounts'>Getting Accounts</a> &#8211; 3.0.1</li>
<li><a href='#Getting Ad Accounts'>GettingAd Accounts</a> &#8211; 3.0.1</li>
<li><a href='#Getting Activities'> Getting Activities</a> &#8211; 3.0.1</li>
<li><a href='#Getting App Requests'>Getting App Requests</a> &#8211; 3.0.1</li>
<li><a href='#Getting Family'>Getting Family</a> &#8211; 3.0.1</li>
<li><a href='#Getting Friend List'>Getting Friend List</a> &#8211; 3.0.1</li>
<li><a href='#Getting Friend Requests'>Getting Friend Requests</a> &#8211; 3.0.1</li>
<li><a href='#Getting Games'>Getting Games</a> &#8211; 3.0.1</li>
<li><a href='#Getting Home Feed'>Getting Home Feed</a> &#8211; 3.0.1</li>
<li><a href='#Getting Inbox'>Getting Inbox</a> &#8211; 3.0.1</li>
<li><a href='#Getting Outbox'>Getting Outbox</a> &#8211; 3.0.1</li>
<li><a href='#Getting Notifications'>Getting Notifications</a> &#8211; 3.0.1</li>
<li><a href='#Getting Statuses'>Getting Statuses</a> &#8211; 3.0.1</li>
<li><a href='#Getting Tagged'>Getting Tagged</a> &#8211; 3.0.1</li>
</ul>
<div>
<h3>Before you start</h3>
</p>
<h4>Reference</h4>
<ul>
<li><a href='https://developers.facebook.com/docs/reference/api/permissions/' target='_blank'>Facebook user permissions</a> &#8211; This shows the list of user permissions that are required to read data and push data.</li>
<li><a href='https://developers.facebook.com/docs/reference/api/' target='_blank'>Facebook PHP Api Reference</a> &#8211; This shows the list of allowed operations both reading and pushing data into facebook. Referrer to this link if you need to know what parameters are allowed to use for each method.</li>
</ul>
<h4>Permissions</h4>
<p>
				Each pushing method (By pushing i mean method that pushes data into facebook not retrieving) requires certain user permissions to work properly. In most cases the permission &#8216;publish_stream&#8217; is enough but sometimes there are certain operations that require more then that. For example to create user checkins you need the<br />
				&#8216;publish_checkins&#8217; user extended permissions, Referrer to the reference section above to see the list of user permissions and extended permissions. <br />
				In the actual class itself the &#8216;FB&#8217; class you&#8217;ll see a property &#8216;@permission&#8217; which is normally referees to the methods visibility in PHP (public, protected, private) but in this case it will show a list of the required facebook permission to have in order to use it.
			</p>
<h4>Method Parameters</h4>
<p>
				Each method both reading and pushing accepts certain parameters. In most cases the first parameter is an array of parameters that specific method accepts, followed by the second parameter which is the user or object id that is set to null by default and is not required.<br />
				For example <a href='#Adding new wall posts'>addWallPost($params, $objectId)</a> accepts an array as the first parameter which should have the following keys: message, picture, link, name, caption, description, source, place, tags. Some are required (message, name) others are optional.<br />
				Unfortunately facebook does not show which are required and which are not so the more values you set the better.<br />
				Second parameter is optional and represents the user id or object id you would like to perform the operation on. In this case the objectId is the user id you would like to post the message on his wall, if you leave it as null it will use the current logged in user as the objectId, if you pass in a number as the second parameter it will try to post the message to that user profile (the user needs to have the required permissions that in this case posting a wall post requires the &#8216;publish_stream&#8217; permissions), In other cases/methods the second argument is not the user id but an object id.<br />
				For example when you want to add a comment to a certain post you&#8217;d use the <a href='#Adding new comments'>addComment($params, $objectId)</a> the objectId is the post id (if you have it stored somewhere or you&#8217;d just posted a new post on a users wall and you have it&#8217;s id).<br />
				To be certain referrer to the class API documentation to see the method parameters and read the description to see what keys it accepts in the first argument array and what is the objectId referees to in that case.
			</p>
<h4>Examples</h4>
<p>
				Inside the &#8216;examples&#8217; folder you&#8217;ll find several php files that show an example of each of the methods provided in the &#8216;FB&#8217; class file.
			</p>
<h4>Checking Result</h4>
<p>
				Even though it covered in the actual &#8216;FB&#8217; class and each example file shows the way to get the result and see if the operation was successful or not, I&#8217;ll quickly cover how to check if the operation you tried to perform was successful or not.<br />
				This is mostly used when trying to push data as opposed to retrieve data since when retrieving data you&#8217;ll get an array with the info, if the operation failed the array will be empty.<br />
				There are several convenient methods you can use to get the result you&#8217;d expect. For instance if we performed an operation for this example purposes we will use <a href='#Adding new wall posts'>addWallPost($params, $objectId)</a>.</p>
<pre class="brush: php">
$wallPost = $facebook-&gt;addWallPost(array(&#039;message&#039; =&gt; &#039;some message&#039;));
if($facebook-&gt;isSuccess()) {
	echo &#039;post created. ID:&#039; . $facebook-&gt;getId();
} else {
	echo $facebook-&gt;getErrorMessage();
}
				</pre>
</p>
<p>
				After performing a certain operation you can check if it was successful or not and getting the info you would like to get by using the following methods:</p>
<pre class="brush: php">
$facebook-&gt;isSuccess() // check if last task was successful
$facebook-&gt;isError() // check if the last operation failed
$facebook-&gt;getError() // return an array with the last operation error info
$facebook-&gt;getErrorCode() // return a string representation of the last error code
$facebook-&gt;getErrorMessage() // return a string representation of the last error message
$facebook-&gt;getResult() // return an array of the result from the last operation
$facebook-&gt;getId() // return the id of the newly created object, usually after performing a push operation you&#039;ll get an id
</pre>
</p></div>
<div>
			<a name='init'></a></p>
<h3>Initiating Class</h3>
<pre class="brush: php">
// Require the only class you will be needing
require &#039;FB.php&#039;;

// Create our Application instance (replace this with your appId and secret).
$facebook = new FB(array(
  &#039;appId&#039;  =&gt; &#039;xxxxxxxx&#039;, // app id
  &#039;secret&#039; =&gt; &#039;xxxxxxxx&#039;, // app secret
  &#039;fileUpload&#039; =&gt; true, // optional if you want to allow file uploads, used when uploading photos to albums
));	</pre>
</p></div>
<div>
			<a name='Login/Logout Option'></a></p>
<h3>Login/Logout Option</h3>
<pre class="brush: php">
// Get User ID
$user = $facebook-&gt;getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don&#039;t know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who&#039;s authenticated.
    $user_profile = $facebook-&gt;api(&#039;/me&#039;);
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook-&gt;getLogoutUrl();
} else {
  	$loginUrl   = $facebook-&gt;getLoginUrl(
	    array(
        	&#039;scope&#039;         =&gt; &#039;email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown&#039;,
        )
	    );
}
</pre>
<p>
			In the above code we check if the user logged in before, if he was then we will have his user id. If he wasn&#8217;t then we will show him the login url. <br />
			The login url accepts an array of parameters the important ones are &#8216;scope&#8217; and &#8216;redirect_uri&#8217; the former is a comma separated list of permission you would like the user to allow you to access to. The later is the url you would like to redirect the user to after he allows the permissions.<br />
			the &#8216;redirect_uri&#8217; must be under the same domain name of the application domain name settings that were set when the application was created in the facebook site. Meaning when creating a new application facebook requires you to enter a domain name that will be used with that application lets say domain.com when setting &#8216;redirect_uri&#8217; you need to make sure<br />
			it is located under the same domain name or sub-domain. if you set &#8216;redirect_uri&#8217; as &#8216;afterlogin.domain.com&#8217; then it will work if you set it to &#8216;someotherdomain.com/login&#8217; this won&#8217;t work and the user will see an error message when he clicks the login button.</p>
<p>			When you choose to set the &#8216;scope&#8217; which is the list of permissions you want to get from the user you need to make sure you set all the permission you&#8217;ll be using if you don&#8217;t you&#8217;ll need to show the login button to the user again after adding new permissions to the &#8216;scope&#8217; or you won&#8217;t be able to perform the actions that require those new permissions.<br />
			You can clear the user state and by that forcing him to login again and giving those new updated permissions you require.
		</p>
<p>
			By default the user access token and data returned after logging in stored in the session, you can though override the methods: setPersistentData, getPersistentData, clearPersistentData, clearAllPersistentData<br />
			After logging in you&#8217;ll get the user access info that will be stored in the session and will look similar to this:
		</p>
<pre class="brush: php">
Array
(
    [fb_344617158898614_state] =&gt; XXXXXXXXXXXXXXX
    [fb_340730982629661_code] =&gt; xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX
    [fb_340730982629661_access_token] =&gt; xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX
    [fb_340730982629661_user_id] =&gt; xxxxxxxxxxxx
)
</pre>
<p>
		You might want to store the access token for later use if you want to perform user operations across sessions. You can then use $facebook->getAccessToken() and $facebook->setAccessToken($token);</p>
<p>
			In the examples below all the get* methods have an objectId as an argument, by default it&#8217;s null and it will use the current logged in user.
		</p>
</p></div>
<div>
			<a name='Getting user information'></a></p>
<h3>Getting User Information</h3>
<pre class="brush: php">
			$facebook-&gt;getUserInfo(); // get current logged in user public info
			$facebook-&gt;getUserInfo(&#039;xxxxx&#039;); // get xxx user public info
			$facebook-&gt;getObjectInfo($objectId); // get object public info for example $facebook-&gt;getObjectInfo(&#039;cocacola&#039;);
			</pre>
</p></div>
<div>
			<a name='Getting user friends'></a></p>
<h3>Getting User Friends</h3>
<pre class="brush: php">
			$facebook-&gt;getFriends();
			</pre>
</p></div>
<div>
			<a name='Getting user wall feed'></a></p>
<h3>Getting User Wall Feed</h3>
<pre class="brush: php">
			$facebook-&gt;getFeed();
			</pre>
</p></div>
<div>
			<a name='Getting user likes'></a></p>
<h3>Getting User Likes</h3>
<pre class="brush: php">
			$facebook-&gt;getLikes();
			</pre>
</p></div>
<div>
			<a name='Getting user movies'></a></p>
<h3>Getting User Movies</h3>
<pre class="brush: php">
			$facebook-&gt;getMovies();
			</pre>
</p></div>
<div>
			<a name='Getting user music'></a></p>
<h3>Getting User Music</h3>
<pre class="brush: php">
			$facebook-&gt;getMusic();
			</pre>
</p></div>
<div>
			<a name='Getting user books'></a></p>
<h3>Getting User Books</h3>
<pre class="brush: php">
			$facebook-&gt;getBooks();
			</pre>
</p></div>
<div>
			<a name='Getting user notes'></a></p>
<h3>Getting User Notes</h3>
<pre class="brush: php">
			$facebook-&gt;getNotes();
			</pre>
</p></div>
<div>
			<a name='Getting user permissions'></a></p>
<h3>Getting User Permissions</h3>
<pre class="brush: php">
			$facebook-&gt;getPermissions();
			</pre>
</p></div>
<div>
			<a name='Getting user photo tags'></a></p>
<h3>Getting User Photo Tags</h3>
<pre class="brush: php">
			$facebook-&gt;getPhotos();
			</pre>
</p></div>
<div>
			<a name='Getting user photo albums'></a></p>
<h3>Getting User Photo Albums</h3>
<pre class="brush: php">
			$facebook-&gt;getAlbums();
			</pre>
</p></div>
<div>
			<a name='Getting user video tags'></a></p>
<h3>Getting User Video Tags</h3>
<pre class="brush: php">
			$facebook-&gt;getVideos();
			</pre>
</p></div>
<div>
			<a name='Getting user video uploads'></a></p>
<h3>Getting User Video Uploads</h3>
<pre class="brush: php">
			$facebook-&gt;getVideos();
			</pre>
</p></div>
<div>
			<a name='Getting user events'></a></p>
<h3>Getting User Events</h3>
<pre class="brush: php">
			$facebook-&gt;getEvents();
			</pre>
</p></div>
<div>
			<a name='Getting user groups'></a></p>
<h3>Getting User Groups</h3>
<pre class="brush: php">
			$facebook-&gt;getGroups();
			</pre>
</p></div>
<div>
			<a name='Getting user checkins'></a></p>
<h3>Getting User Checkins</h3>
<pre class="brush: php">
			$facebook-&gt;getCheckins();
			</pre>
</p></div>
<div>
			<a name='Getting user locations'></a></p>
<h3>Getting User Locations</h3>
<pre class="brush: php">
			$facebook-&gt;getLocations();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Accounts'></a></p>
<h3>Getting Accounts</h3>
<pre class="brush: php">
			$facebook-&gt;getAccounts();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Ad Accounts'></a></p>
<h3>Getting Ad Accounts</h3>
<pre class="brush: php">
			$facebook-&gt;getAdAccounts();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Activities'></a></p>
<h3>Getting Activities</h3>
<pre class="brush: php">
			$facebook-&gt;getActivities();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting App Requests'></a></p>
<h3>Getting App Requests</h3>
<pre class="brush: php">
			$facebook-&gt;getAppRequests();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Family'></a></p>
<h3>Getting Family</h3>
<pre class="brush: php">
			$facebook-&gt;getFamily();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Friend List'></a></p>
<h3>Getting Friend List</h3>
<pre class="brush: php">
			$facebook-&gt;getFriendList();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Friend Requests'></a></p>
<h3>Getting Friend Requests</h3>
<pre class="brush: php">
			$facebook-&gt;getFriendRequests();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Games'></a></p>
<h3>Getting Games</h3>
<pre class="brush: php">
			$facebook-&gt;getGames();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Home Feed'></a></p>
<h3>Getting Home Feed</h3>
<pre class="brush: php">
			$facebook-&gt;getHomeFeed();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Inbox'></a></p>
<h3>Getting Inbox</h3>
<pre class="brush: php">
			$facebook-&gt;getInbox();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Outbox'></a></p>
<h3>Getting Outbox</h3>
<pre class="brush: php">
			$facebook-&gt;getOutbox();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Notifications'></a></p>
<h3>Getting Notifications</h3>
<pre class="brush: php">
			$facebook-&gt;getNotifications();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Statuses'></a></p>
<h3>Getting Statuses</h3>
<pre class="brush: php">
			$facebook-&gt;getStatuses();
			</pre>
</p></div>
<div class='box box-space'>
			<a name='Getting Tagged'></a></p>
<h3>Getting Tagged</h3>
<pre class="brush: php">
			$facebook-&gt;getTagged();
			</pre>
</p></div>
<div>
			<a name='Adding new wall posts'></a></p>
<h3>Adding New Wall Posts</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addWallPost($params); // perform operation on the current logged in user
			// $operationResult = $facebook-&gt;addWallPost($params, $objectId); // perform operation on a certain objectId
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new notes'></a></p>
<h3>Adding New Notes</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addNote($params); // perform operation on the current logged in user
			// $operationResult = $facebook-&gt;addNote($params, $objectId); // perform operation on a certain objectId
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new links'></a></p>
<h3>Adding New Links</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addLink($params); // perform operation on the current logged in user
			// $operationResult = $facebook-&gt;addLink($params, $objectId); // perform operation on a certain objectId
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new comments'></a></p>
<h3>Adding New Comments</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addComment($params, $objectId); // perform operation on a certain objectId, objectId required
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new likes'></a></p>
<h3>Adding New Likes</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;like($objectId); // perform operation on a certain objectId, objectId required
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new events'></a></p>
<h3>Adding New Events</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addEvent($params); // perform operation on the current logged in user
			// $operationResult = $facebook-&gt;addEvent($params, $objectId); // perform operation on a certain objectId
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new albums'></a></p>
<h3>Adding New Albums</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addAlbum($params); // perform operation on the current logged in user
			// $operationResult = $facebook-&gt;addAlbum($params, $objectId); // perform operation on a certain objectId
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new photos'></a></p>
<h3>Adding New Photos</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addPhoto(array(&#039;message&#039; =&gt; &#039;some message&#039;, &#039;image&#039; =&gt; &#039;@&#039; . FILE_LOCATION), $_POST[&#039;albumid&#039;], $objectId); // perform operation on a certain objectId, objectId is required in this case it&#039;s the album id
			// FILE_LOCATION must be on the server see demo photo.php
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Adding new checkins'></a></p>
<h3>Adding New Checkins</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;addCheckin($params); // perform operation on the current logged in user
			// $operationResult = $facebook-&gt;addCheckin($params, $objectId); // perform operation on a certain objectId
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Attending an event'></a></p>
<h3>Attending An Event</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;eventAttending($objectId); // perform operation on a certain objectId, objectId is required it&#039;s the even id
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Maybe Attending an event'></a></p>
<h3>Maybe Attending An Event</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;eventMaybe($objectId); // perform operation on a certain objectId, objectId is required it&#039;s the even id
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Declining an event'></a></p>
<h3>Declining An Event</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;eventDecline($objectId); // perform operation on a certain objectId, objectId is required it&#039;s the even id
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<div>
			<a name='Searching'></a></p>
<h3>Searching</h3>
<pre class="brush: php">
			$operationResult = $facebook-&gt;search($searchQuery, $type); // perform search operation
			// searchQuery is the text you would like to search in facebook
			// type is the type of objects to search for. for example: user, post, group, event, page etc...
			if($facebook-&gt;isSuccess()) {
				// Operation was successful
				// Use $facebook-&gt;getId(), or $facebook-&gt;getResult() or $operationResult to access the returned data
			} else {
				// Operation was not successful
				// user $facebook-&gt;getError() or $facebook-&gt;getErrorMessage() to access the error info
			}
			</pre>
</p></div>
<p>		<a name='reset'></a></p>
<div>
<h3>Clearing Session / Resetting</h3>
<pre class="brush: php">
			$facebook-&gt;clear(); // will reset all the saved session states, basically invokes clearAllPersistentData
			$facebook-&gt;clearState($key); // deletes certain state from the persistent storage basically invokes clearPersistentData($key)
			</pre>
</p></div>
<p>		<a name='extendingaccesstoken'></a></p>
<div class='box box-space'>
<h3>Extending Access Token</h3>
<p>
				Facebook will be doing some changes to the API and starting May 1st 2012 it will remove the offline_access extended permission. <a href='https://developers.facebook.com/roadmap/offline-access-removal/' target='_blank'>Read More.</a><br />
				<br />
				With this method you will be able to extend the current users access token to be valid up to 60 days.
			</p>
<pre class="brush: php">
			$facebook-&gt;extenedAccessToken();
			</pre>
<p>Usage example (also available under /examples/extendedaccesstoken.php)</p>
<pre class="brush: php">
			$result = $facebook-&gt;extenedAccessToken();
			if($facebook-&gt;isSuccess()) {
				echo &quot;Access token extended:\n&quot;;
				echo $facebook-&gt;getAccessToken();
				var_dump($result);
			} else {
				echo &quot;There was an error extending the access token:\n&quot;;
				echo $facebook-&gt;getErrorMessage();
			}
			</pre>
</p></div>
<div>
<h1>Examples</h1>
</p>
<h3>base.php</h3>
<p>This is a base file for all the examples. We will be calling and using this file in all the examples.</p>
<pre class="brush: php">
&lt;?php
require &#039;FB.php&#039;;

// Create our Application instance (replace this with your appId and secret).
$facebook = new FB(array(
  &#039;appId&#039;  =&gt; &#039;xxxx&#039;,
  &#039;secret&#039; =&gt; &#039;xxxxx&#039;,
));

// In case we want to perform an operation on a specific user not necessarily the one that is logged in right now
// we can always use the setAccessToekn method to set a certain user access token that previously installed the
// application and allowed us to perform operations on his profile
//$facebook-&gt;setAccessToken($accessToekn);

// Get User ID
$user = $facebook-&gt;getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don&#039;t know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who&#039;s authenticated.
    $user_profile = $facebook-&gt;api(&#039;/me&#039;);
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook-&gt;getLogoutUrl();
} else {
  	$loginUrl   = $facebook-&gt;getLoginUrl(
	            array(
	                &#039;scope&#039;         =&gt; &#039;read_stream,user_website,user_videos,user_status,user_religion_politics,user_relationship_details,user_relationships,user_questions,user_photos,user_notes,user_location,user_likes,user_interests,user_groups,user_events,user_education_history,user_checkins,user_activities,email,offline_access,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown&#039;,
	            )
	    );
}
</pre>
<h3>Login / Logout</h3>
<pre class="brush: php">
&lt;?php
include(&#039;base.php&#039;);

?&gt;
&lt;!doctype html&gt;
&lt;html xmlns:fb=&#039;http://www.facebook.com/2008/fbml&#039;&gt;
  &lt;head&gt;
    &lt;title&gt;php-sdk&lt;/title&gt;
    &lt;style&gt;
      body {
        font-family: &#039;Lucida Grande&#039;, Verdana, Arial, sans-serif;
      }
      h1 a {
        text-decoration: none;
        color: #3b5998;
      }
      h1 a:hover {
        text-decoration: underline;
      }
    &lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;php-sdk&lt;/h1&gt;

    &lt;?php if ($user): ?&gt;
      &lt;a href=&#039;&lt;?php echo $logoutUrl; ?&gt;&#039;&gt;Logout&lt;/a&gt;
    &lt;?php else: ?&gt;
      &lt;div&gt;
        Login using OAuth 2.0 handled by the PHP SDK:
        &lt;a href=&#039;&lt;?php echo $loginUrl; ?&gt;&#039;&gt;Login with Facebook&lt;/a&gt;
      &lt;/div&gt;
    &lt;?php endif ?&gt;

    &lt;h3&gt;PHP Session&lt;/h3&gt;
    &lt;pre&gt;&lt;?php print_r($_SESSION); ?&gt;&lt;/pre&gt;

    &lt;?php if ($user): ?&gt;
      &lt;h3&gt;You&lt;/h3&gt;
      &lt;img src=&#039;https://graph.facebook.com/&lt;?php echo $user; ?&gt;/picture&#039;&gt;

      &lt;h3&gt;Your User Object (/me)&lt;/h3&gt;
      &lt;pre&gt;&lt;?php print_r($user_profile); ?&gt;&lt;/pre&gt;
    &lt;?php else: ?&gt;
      &lt;strong&gt;&lt;em&gt;You are not Connected.&lt;/em&gt;&lt;/strong&gt;
    &lt;?php endif ?&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<h3>New Album</h3>
<p>Create a new photo album</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

if(isset($_POST[&#039;POSTTOWALL&#039;])) {
	$wallPost = $facebook-&gt;addAlbum(array(&#039;name&#039; =&gt; $_POST[&#039;message&#039;] ? $_POST[&#039;message&#039;] : &#039;blah&#039;));
	if($facebook-&gt;isSuccess()) {
		echo &#039;&lt;pre&gt;&#039;;
		echo &#039;album created. ID:&#039; . $facebook-&gt;getId();
	} else {
		echo $facebook-&gt;getErrorMessage();
	}

}

?&gt;

&lt;form method=&#039;post&#039;&gt;
	&lt;textarea name=&#039;message&#039;&gt;&lt;/textarea&gt;
	&lt;input type=&#039;submit&#039; name=&#039;POSTTOWALL&#039;&gt;
&lt;/form&gt;
</pre>
<h3>New Link</h3>
<p>Create a new link</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

if(isset($_POST[&#039;POSTTOWALL&#039;])) {
	$wallPost = $facebook-&gt;addLink(array(&#039;subject&#039; =&gt; $_POST[&#039;subject&#039;] ? $_POST[&#039;subject&#039;] : &#039;subject&#039;, &#039;message&#039; =&gt; $_POST[&#039;message&#039;] ? $_POST[&#039;message&#039;] : &#039;message&#039;));
	if($facebook-&gt;isSuccess()) {
		echo &#039;&lt;pre&gt;&#039;;
		echo &#039;link created. ID:&#039; . $facebook-&gt;getId();
	} else {
		echo $facebook-&gt;getErrorMessage();
	}

}

?&gt;

&lt;form method=&#039;post&#039;&gt;
	&lt;textarea name=&#039;subject&#039;&gt;subject&lt;/textarea&gt;
	&lt;textarea name=&#039;message&#039;&gt;message&lt;/textarea&gt;
	&lt;input type=&#039;submit&#039; name=&#039;POSTTOWALL&#039;&gt;
&lt;/form&gt;
</pre>
<h3>New Note</h3>
<p>Create a new note</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

if(isset($_POST[&#039;POSTTOWALL&#039;])) {
	$wallPost = $facebook-&gt;addNote(array(&#039;subject&#039; =&gt; $_POST[&#039;subject&#039;] ? $_POST[&#039;subject&#039;] : &#039;subject&#039;, &#039;message&#039; =&gt; $_POST[&#039;message&#039;] ? $_POST[&#039;message&#039;] : &#039;message&#039;));
	if($facebook-&gt;isSuccess()) {
		echo &#039;&lt;pre&gt;&#039;;
		echo &#039;note created. ID:&#039; . $facebook-&gt;getId();
	} else {
		echo $facebook-&gt;getError();
	}

}

?&gt;

&lt;form method=&#039;post&#039;&gt;
	&lt;textarea name=&#039;subject&#039;&gt;subject&lt;/textarea&gt;
	&lt;textarea name=&#039;message&#039;&gt;message&lt;/textarea&gt;
	&lt;input type=&#039;submit&#039; name=&#039;POSTTOWALL&#039;&gt;
&lt;/form&gt;
</pre>
<h3>New Photo</h3>
<p>Create a new photo and upload to a certain album</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

if(isset($_POST[&#039;POSTTOWALL&#039;])) {
	print_r($_FILES);
	$wallPost = $facebook-&gt;addPhoto(array(&#039;message&#039; =&gt; $_POST[&#039;message&#039;] ? $_POST[&#039;message&#039;] : &#039;blah&#039;, &#039;image&#039; =&gt; &#039;@&#039; . $_FILES[&#039;source&#039;][&#039;tmp_name&#039;]), $_POST[&#039;albumid&#039;]);
	if($facebook-&gt;isSuccess()) {
		echo &#039;&lt;pre&gt;&#039;;
		echo &#039;photo created. ID:&#039;;
		if($facebook-&gt;getId()) {
			echo $facebook-&gt;getId();
		} else {
			print_r($wallPost);
		}
	} else {
		print_r($facebook-&gt;getErrorMessage());
	}

}

?&gt;

&lt;form method=&#039;post&#039; enctype=&#039;multipart/form-data&#039;&gt;
	&lt;textarea name=&#039;message&#039;&gt;&lt;/textarea&gt;
	&lt;input type=&#039;text&#039; value=&#039;10150665078202310&#039; name=&#039;albumid&#039; /&gt;
	&lt;input name=&#039;source&#039; type=&#039;file&#039;&gt;
	&lt;input type=&#039;submit&#039; name=&#039;POSTTOWALL&#039;&gt;

&lt;/form&gt;
</pre>
<h3>Show Object Picture</h3>
<p>Show a picture for a certain object (user,page,group etc&#8230;)</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

echo &#039;&lt;pre&gt;&#039;;
print_r($facebook-&gt;getObjectPicture(&#039;cocacola&#039;));
</pre>
<h3>Search</h3>
<p>Search facebook using the wrapper</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

echo &#039;&lt;pre&gt;&#039;;
print_r($facebook-&gt;search(&#039;cocacola&#039;, &#039;place&#039;));
</pre>
<h3>Show User Info</h3>
<p>Display the current logged in user info</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

$types = array(
	&#039;friends&#039;,
	&#039;feed&#039;,
	&#039;likes&#039;,
	&#039;movies&#039;,
	&#039;music&#039;,
	&#039;books&#039;,
	&#039;notes&#039;,
	&#039;permissions&#039;,
	&#039;photos&#039;,
	&#039;albums&#039;,
	&#039;videos&#039;,
	&#039;events&#039;,
	&#039;groups&#039;,
	&#039;checkins&#039;,
	&#039;locations&#039;,
	);

foreach($types as $type) {
	$name = &#039;get&#039; . ucfirst($type);
	echo &#039;&lt;h1&gt;&#039;.$name.&#039;&lt;/h1&gt;&#039;;
	echo &#039;&lt;pre&gt;&#039;;
	echo print_r($facebook-&gt;$name(), true);
	echo &#039;&lt;/pre&gt;&#039;;
}
</pre>
<h3>Wall Post</h3>
<p>Post something on the users wall</p>
<pre class="brush: php">
&lt;?php

include &#039;base.php&#039;;
if(!$user) {
	die(&#039;You must login first.&#039;);
}

if(isset($_POST[&#039;POSTTOWALL&#039;])) {
	$wallPost = $facebook-&gt;addWallPost(array(&#039;message&#039; =&gt; $_POST[&#039;message&#039;] ? $_POST[&#039;message&#039;] : &#039;blah&#039;));
	if($facebook-&gt;isSuccess()) {
		echo &#039;&lt;pre&gt;&#039;;
		echo &#039;post created. ID:&#039; . $facebook-&gt;getId();
	} else {
		echo $facebook-&gt;getError();
	}

}

?&gt;

&lt;form method=&#039;post&#039;&gt;
	&lt;textarea name=&#039;message&#039;&gt;&lt;/textarea&gt;
	&lt;input type=&#039;submit&#039; name=&#039;POSTTOWALL&#039;&gt;
&lt;/form&gt;
</pre>
</div>
<div style='text-align:center;'>
<h1> -> <a title="Facebook API" href="http://vadimg.com/wp-content/uploads/2012/03/Facebook-API-3.0.zip" target="_blank">Click Here To Download Version 3.0</a> <-</h1>
</div>
<div style='text-align:center;'>
<h1> -> <a title="Facebook API" href="http://vadimg.com/wp-content/uploads/2012/03/Facebook-API-3.0.1.zip" target="_blank">Click Here To Download Version 3.0.1</a> <-</h1>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2012/03/29/php-facebook-api-wrapper-updated-v-3-0-1/" rel="bookmark" title="03/29/2012">PHP Facebook API Wrapper Updated V 3.0.1</a> &#8211; 03/29/2012</li>
<li><a href="http://vadimg.com/2012/03/31/usps-php-api-usage-examples/" rel="bookmark" title="03/31/2012">USPS PHP API &#8211; Usage Examples</a> &#8211; 03/31/2012</li>
<li><a href="http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/" rel="bookmark" title="03/30/2012">USPS PHP API Wrapper | Class Library</a> &#8211; 03/30/2012</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
</ul>
<p><!-- Similar Posts took 8.942 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Atthevip.com code is now on github!</title>
		<link>http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/</link>
		<comments>http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 19:03:35 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[facebook]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=987</guid>
		<description><![CDATA[AtTheVip.com CMS Application &#8211; Events &#38; Galleries This is something i&#8217;ve made for the nightlife arena, This application is specifically made for a site that wants to display events, clubs listing, galleries etc&#8230; You can customize pretty much anything. It supports uploading images to both rackspace file server or locally (preferably rackspace files as it&#8217;s faster). [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<h1>AtTheVip.com CMS Application &#8211; Events &amp; Galleries</h1>
<p>This is something i&#8217;ve made for the nightlife arena, This application is specifically made for a site that wants to display events, clubs listing, galleries etc&#8230; You can customize pretty much anything. It supports uploading images to both rackspace file server or locally (preferably rackspace files as it&#8217;s faster). Demo can be seen here: http://atthevip.com</p>
<h3><a name="Some_of_the_features"></a>Some of the features</h3>
</div>
<div style="direction: ltr; text-align: left;">
<ol>
<li>Clubs Listing &#8211; Full System</li>
<li>Galleries &#8211; upload locally or to rackspace, full management, visibility options, cover selection, resizing and watermarking</li>
<li>Custom Pages &#8211; Full System (Includes categories, tags, posts, replies, multi-language, permission based and more)</li>
<li>Events listing &#8211; Full system with thumbnails, geo location etc..</li>
<li>Facebook comments for galleries, clubs, events</li>
<li>User Manager &#8211; Full user manager</li>
<li>Permission Manager &#8211; Hierarchy based permissions</li>
<li>Contact Manager &#8211; Allows users to contact you through the website and it will email those to a certain email and add them to the admin control panel where you will be able to view and reply directly from the admin control panel.</li>
<li>Statistics</li>
<li>Dashboard</li>
<li>Full featured Control Panel with ability to restrict certain users to certain places in the ACP</li>
<li>Facebook integration &#8211; Ability to allow users to login and register from their facebook account</li>
<li>Social ready &#8211; You can share pretty much everything with Twitter and facebook share buttons</li>
<li>Signup &amp; Login &#8211; Ability to signup for the site and login, includes forget password option that verifies the user through his email same thing applies for the signup process.</li>
<li>Settings Manager &#8211; You can change the sites settings right from the built in admin control panel, You can add settings at any time from the ACP and use them in the code as well.</li>
<li>User public profiles &#8211; Displays what content is user submitted, his info and role in the application.</li>
<li>SEO Ready &#8211; All links are SEO ready that includes the user profiles, articles, blogs, custom pages, downloads forum topics etc..</li>
<li>And more features</li>
</ol>
<p>This is published for learning purposes, And is released under the new GPL license.</p>
<p><strong>This has one restriction, The CMS can be used for other websites, But you can&#8217;t use the theme that comes with this CMS as it&#8217;s a personal theme i bought from themeforest.net.</strong></p>
<h3><a href="http://atthevip.com" target="_blank">View Demo &#8211; http://atthevip.com</a></h3>
<h3><a href="https://github.com/VinceG/atthevip.com-Public" target="_blank">Fork from github.com</a></h3>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/" rel="bookmark" title="12/27/2011">AtTheVip.com &#8211; New Yii Powered application</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2012/04/03/yiiframework-cms-is-now-on-github/" rel="bookmark" title="04/03/2012">Yiiframework CMS is now on Github</a> &#8211; 04/03/2012</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
</ul>
<p><!-- Similar Posts took 6.904 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AtTheVip.com &#8211; New Yii Powered application</title>
		<link>http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/</link>
		<comments>http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 18:11:15 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[atthevip]]></category>
		<category><![CDATA[atthevip.com]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=968</guid>
		<description><![CDATA[This application was built from scratch to publish events that occur in the Los Angeles area, Mostly nigh clubs parties and concerts. One of the most impressive features the application provides is the gallery system, which is almost entirely automated. The events are being imported using a Yii command that is run by a cron [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">
<p>This application was built from scratch to publish events that occur in the Los Angeles area, Mostly nigh clubs parties and concerts. One of the most impressive features the application provides is the gallery system, which is almost entirely automated. The events are being imported using a Yii command that is run by a cron every day to import the events from various club websites and promotion sites (see each event page at the bottom for the source location).</p>
<p><strong>Some of the key features:</strong></p>
<ul>
<li>Automated Events importer</li>
<li>Rackspace files integration &#8211; Gallery images are uploaded directly to rackspace files instance, container created and the url is assigned to the newly created gallery (see screenshot)</li>
<li>Media manager &#8211; uses elfinder to upload simple files directly to the local server while the java uploader uploads to the rackspace instance. The java uploader also watermarks the images and creates several resized versions of the same image, Hence why one of the screen shots shows over 100K objects in a single container</li>
<li>Gallery &#8211; Each gallery is assigned with a container in rackspace, the images uploaded to a gallery can have the site watermark stamped automatically and if a club is assigned to that gallery then the club watermark will also be watermarked onto the images uploaded (if the club has a watermark assigned to it).</li>
<li>Cache &#8211; so many images served can take a while to load but not in this case, all images are cached with HTTP headers and since we are using rackspace files instances the images are served over the rackspace CDN which loads them even faster.</li>
<li>Management &#8211; Everything is manageable from within the admin panel. You can view all images within a specific gallery and choose what images you would like to hide/delete or mark a certain image to be the gallery cover.</li>
<li>Permissions &#8211; All operations within the admin panel are based on permissions so if the user role does not have the required permission he will not be able to perform the action or view a certain piece of the section.</li>
</ul>
<p>Needles to specify the common features incorporated such as custom pages, news, comments, facebook integration, users &amp; roles.</p>
<p>To see the site in action just visit <a href="http://atthevip.com" target="_blank">http://atthevip.com</a> to see the various features being used. To show case the admin panel i&#8217;ve attached screen shots, Each one should give an idea of the goal and purpose of that specific page in the panel.</p>

<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-36-11-am/' title='Screen Shot 2011-12-27 at 9.36.11 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.36.11-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.36.11 AM" title="Screen Shot 2011-12-27 at 9.36.11 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-36-31-am/' title='Screen Shot 2011-12-27 at 9.36.31 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.36.31-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.36.31 AM" title="Screen Shot 2011-12-27 at 9.36.31 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-36-57-am/' title='Screen Shot 2011-12-27 at 9.36.57 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.36.57-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.36.57 AM" title="Screen Shot 2011-12-27 at 9.36.57 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-37-09-am/' title='Screen Shot 2011-12-27 at 9.37.09 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.37.09-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.37.09 AM" title="Screen Shot 2011-12-27 at 9.37.09 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-37-20-am/' title='Screen Shot 2011-12-27 at 9.37.20 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.37.20-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.37.20 AM" title="Screen Shot 2011-12-27 at 9.37.20 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-37-39-am/' title='Screen Shot 2011-12-27 at 9.37.39 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.37.39-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.37.39 AM" title="Screen Shot 2011-12-27 at 9.37.39 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-38-16-am/' title='Screen Shot 2011-12-27 at 9.38.16 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.38.16-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.38.16 AM" title="Screen Shot 2011-12-27 at 9.38.16 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-38-33-am/' title='Screen Shot 2011-12-27 at 9.38.33 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.38.33-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.38.33 AM" title="Screen Shot 2011-12-27 at 9.38.33 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-39-04-am/' title='Screen Shot 2011-12-27 at 9.39.04 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.39.04-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.39.04 AM" title="Screen Shot 2011-12-27 at 9.39.04 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-39-22-am/' title='Screen Shot 2011-12-27 at 9.39.22 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.39.22-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.39.22 AM" title="Screen Shot 2011-12-27 at 9.39.22 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-39-40-am/' title='Screen Shot 2011-12-27 at 9.39.40 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.39.40-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.39.40 AM" title="Screen Shot 2011-12-27 at 9.39.40 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-40-17-am/' title='Screen Shot 2011-12-27 at 9.40.17 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.40.17-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.40.17 AM" title="Screen Shot 2011-12-27 at 9.40.17 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-40-35-am/' title='Screen Shot 2011-12-27 at 9.40.35 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.40.35-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.40.35 AM" title="Screen Shot 2011-12-27 at 9.40.35 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-41-24-am/' title='Screen Shot 2011-12-27 at 9.41.24 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.41.24-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.41.24 AM" title="Screen Shot 2011-12-27 at 9.41.24 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-42-23-am/' title='Screen Shot 2011-12-27 at 9.42.23 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.42.23-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.42.23 AM" title="Screen Shot 2011-12-27 at 9.42.23 AM" /></a>
<a href='http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/screen-shot-2011-12-27-at-9-42-45-am/' title='Screen Shot 2011-12-27 at 9.42.45 AM'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-27-at-9.42.45-AM-150x150.png" class="attachment-thumbnail" alt="Screen Shot 2011-12-27 at 9.42.45 AM" title="Screen Shot 2011-12-27 at 9.42.45 AM" /></a>

</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2010/04/27/java-uploader-yii-extension/" rel="bookmark" title="04/27/2010">Java Uploader Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2010/11/26/php-bug-tracker-tickets-multi-moderation-filtering/" rel="bookmark" title="11/26/2010">PHP Bug Tracker &#8211; Tickets Multi-Moderation &#038; Filtering</a> &#8211; 11/26/2010</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
</ul>
<p><!-- Similar Posts took 7.584 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</title>
		<link>http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/</link>
		<comments>http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 17:23:42 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[editor]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=947</guid>
		<description><![CDATA[For valuable work on creation of sites you need a good comfortable editor necessarily. There are many requiring paid products for this purpose, but we would like to select free of charge very functional and at the same time of simple in the use editor -Codelobster PHP Edition . Let us consider some important possibilities [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">
<p>For valuable work on creation of sites you need a good comfortable editor necessarily. There are many requiring paid products for this purpose, but we would like to select free of charge very functional and at the same time of simple in the use editor -<strong><a href="http://www.codelobster.com/" target="_blank">Codelobster PHP Edition</a></strong> .</p>
<ul>Let us consider some important possibilities and advantages of this program:</p>
<li>All <strong>code highlights</strong> depending on a type, the also mixed code is thus supported, so the area of HTML will be highlighted as HTML, PHP as PHP, and Javascript as Javascript in a the same file. Thre is possibility of choice from color schemes, including popular IDEs.</li>
<li>Powerful <strong>autocompletion for HTML, PHP, CSS and Javascript</strong>, including HTML5 and CSS3. For PHP the structure of project is fully recognized, and the complete list of methods falls out in the proper places.</li>
<li><strong>HTML/CSS</strong> inspector on the type of Firebug, which allows easily to correlate the selected elements of page with a code and proper style.</li>
<li><strong>Context help</strong> on all supported languages. By pressing F1 key the page with detailed description for current tag, attribute or function will be opened.</li>
<li><strong>PHP debugger</strong>. PHP debugger allows to execute PHP scripts incrementally, watching the values of all variables in every line.</li>
<li><strong>SQL manager</strong> allows to produce all necessary actions with a database &#8211; to add, delete, edit a structure and records in tables, to export data, execute SQL queries. Highlighting and autocompletion works for SQL files also.</li>
<li><strong>Support of FTP</strong> allows to work straight with a remote server and to do all necessary changes with files;</li>
<li><strong>The portable option</strong> allows to use editor without the preliminary installation.</li>
<li>Other useful utilities: pair highlighting, possibility of blocks selection, collapsing, tooltips, navigation on descriptions of functions and included files at withholding of the key of CTRL, viewing of structure of files and project, preview in a browser, book-marks, and all other standard possibilities for work with a code.</li>
</ul>
<h4>Also there are special plugins for work with</h4>
<ul>
<li>CMS: <strong>Drupal, Joomla</strong></li>
<li>PHP frameworks: <strong>CakePHP, CodeIgniter, Symfony, Yii</strong></li>
<li>JavaScript libraly: <strong>JQuery</strong></li>
<li><strong>WordPress</strong> blogging engine</li>
<li><strong>Smarty</strong> template engine</li>
</ul>
<p>Developer	Codelobster Software<br />
Web Site	http://www.codelobster.com/<br />
Language	English, Russian, German, Spanish, French, Portuguese<br />
Supported OS	Windows 2000, Windows XP, Windows Vista, Windows 7</p>
<p>Download: <a href="http://www.codelobster.com/download/CodelobsterPHPEditionSetup.exe" target="_blank">Click Here</a></p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/05/06/zendframework-18-manual-chm-file/" rel="bookmark" title="05/06/2009">ZendFramework 1.8 Manual CHM file</a> &#8211; 05/06/2009</li>
<li><a href="http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/" rel="bookmark" title="03/30/2012">USPS PHP API Wrapper | Class Library</a> &#8211; 03/30/2012</li>
<li><a href="http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/" rel="bookmark" title="11/17/2010">PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</a> &#8211; 11/17/2010</li>
<li><a href="http://vadimg.com/2012/03/31/usps-php-api-usage-examples/" rel="bookmark" title="03/31/2012">USPS PHP API &#8211; Usage Examples</a> &#8211; 03/31/2012</li>
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 2 &#8211; התקנת התוסף עבור PHP</a> &#8211; 09/28/2010</li>
</ul>
<p><!-- Similar Posts took 7.054 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yiiframework.co.il Code is now open sourced</title>
		<link>http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/</link>
		<comments>http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 21:18:26 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[cms mananger]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[mini]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[yii cms]]></category>
		<category><![CDATA[yii content]]></category>
		<category><![CDATA[yii content manager]]></category>
		<category><![CDATA[yii mananger]]></category>
		<category><![CDATA[yiiframework]]></category>
		<category><![CDATA[yiiframework cms]]></category>
		<category><![CDATA[yiiframework.co.il]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=916</guid>
		<description><![CDATA[CMS Application This is something I&#8217;ve been working on and still am constantly to make it better, This is a CMS system that allows you to control an entire multi-language website simply from within it&#8217;s built in Admin control panel. Some of the features Blogs &#8211; Full System (Includes categories, tags, posts, replies, multi-language, permission [...]]]></description>
			<content:encoded><![CDATA[<div style='direction: ltr; text-align: left;'>
<h1>CMS Application</h1>
<p>This is something I&#8217;ve been working on and still am constantly to make it better, This is a CMS system that allows you to control an entire multi-language website simply from within it&#8217;s built in Admin control panel.</p>
<h3><a name="Some_of_the_features"></a>Some of the features</h3>
<ul>
<li>Blogs &#8211; Full System (Includes categories, tags, posts, replies, multi-language, permission based and more)</li>
<li>Custom Pages &#8211; Full System (Includes categories, tags, posts, replies, multi-language, permission based and more)</li>
<li>Articles &#8211; Full System (Includes categories, tags, posts, replies, multi-language, permission based and more)</li>
<li>Tutorials &#8211; Full System (Includes categories, tags, posts, replies, multi-language, permission based and more)</li>
<li>Downloads System &#8211; Full System (Includes categories, tags, posts, replies, multi-language, permission based and more)</li>
<li>User Manager &#8211; Full user manager</li>
<li>Permission Manager &#8211; Hierarchy based permissions</li>
<li>Forum &#8211; Includes topics, replies, editor, topic subscription, topic &amp; replies management and more.</li>
<li>Newsletter Manager &#8211; Allows you to send an email to all users subscribed</li>
<li>Contact Manager &#8211; Allows users to contact you through the website and it will email those to a certain email and add them to the admin control panel where you will be able to view and reply directly from the admin control panel.</li>
<li>Language Manager</li>
<li>Statistics</li>
<li>Dashboard</li>
<li>Full featured Control Panel with ability to restrict certain users to certain places in the ACP</li>
<li>Facebook integration &#8211; Ability to allow users to login and register from their facebook account</li>
<li>Social ready &#8211; You can share pretty much everything with Twitter and facebook share buttons</li>
<li>Signup &amp; Login &#8211; Ability to signup for the site and login, includes forget password option that verifies the user through his email same thing applies for the signup process.</li>
<li>Settings Manager &#8211; You can change the sites settings right from the built in admin control panel, You can add settings at any time from the ACP and use them in the code as well.</li>
<li>User public profiles &#8211; Displays what content is user submitted, his info and role in the application.</li>
<li>SEO Ready &#8211; All links are SEO ready that includes the user profiles, articles, blogs, custom pages, downloads forum topics etc..</li>
<li>Feeds &#8211; Includes feeds to all content based on category/language</li>
<li>Ability to print or download PDF/Doc for all content available</li>
<li>And more features</li>
</ul>
<p>It has no installer and you&#8217;ll need to configure it manually by importing the base.sql file and changing the db connection settings from the protected/config files.</p>
<p>This is published for learning purposes, And is released under the new GPL license.</p>
<p><strong>This has one restriction, The CMS can be used for other websites, But you can&#8217;t user the theme that comes with this CMS as it&#8217;s a personal theme i bought from themeforest.net.</strong></p>
<h3><a href="http://yiiframework.co.il/" target="_blank">View a demo &#8211; http://yiiframework.co.il</a></h3>
<h3><a href="http://code.google.com/p/yiiframework-co-il-cms/" target="_blank">Get it from google code</a></h3>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/" rel="bookmark" title="12/27/2011">AtTheVip.com &#8211; New Yii Powered application</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/" rel="bookmark" title="03/21/2010">Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב</a> &#8211; 03/21/2010</li>
</ul>
<p><!-- Similar Posts took 8.343 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Manager &#8211; Source Code is now Open Sourced</title>
		<link>http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/</link>
		<comments>http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 12:32:03 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[open soruce]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[project manager]]></category>
		<category><![CDATA[projet]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=920</guid>
		<description><![CDATA[Simple Project Manager / Bug Tracker This is something I&#8217;ve been working on but never got a chance to complete, It has no installer and you&#8217;ll need to configure it manually by importing the base.sql file and changing the db connection settings from the protected/config files. Features Issues Wiki/Articles Activity Feed Projects This is published [...]]]></description>
			<content:encoded><![CDATA[<div style='direction: ltr; text-align: left;'>
<h1 style="text-align: left;">Simple Project Manager / Bug Tracker</h1>
<p style="text-align: left;">This is something I&#8217;ve been working on but never got a chance to complete, It has no installer and you&#8217;ll need to configure it manually by importing the base.sql file and changing the db connection settings from the protected/config files.</p>
<h3 style="text-align: left;"><a name="Features"></a>Features</h3>
<ul style="text-align: left;">
<li>Issues</li>
<li>Wiki/Articles</li>
<li>Activity Feed</li>
<li>Projects</li>
</ul>
<p style="text-align: left;">This is published for learning purposes, And is released under the new GPL license.</p>
<h3><a href="http://vadimg.com/tracker" target="_blank">View Demo</a></h3>
<h3><a href="http://code.google.com/p/yii-tracker/" target="_blank">Get it from google code</a></h3>
<p style="text-align: left;">
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/" rel="bookmark" title="10/23/2010">PHP Project Manager &#8211; Creating &#038; Updating Projects</a> &#8211; 10/23/2010</li>
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
</ul>
<p><!-- Similar Posts took 6.698 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>דרוש פרילנסר/ית להשתלבות בפרויקט פיתוח צד שרת מעל Yii Framework</title>
		<link>http://vadimg.com/2011/03/14/%d7%93%d7%a8%d7%95%d7%a9-%d7%a4%d7%a8%d7%99%d7%9c%d7%a0%d7%a1%d7%a8%d7%99%d7%aa-%d7%9c%d7%94%d7%a9%d7%aa%d7%9c%d7%91%d7%95%d7%aa-%d7%91%d7%a4%d7%a8%d7%95%d7%99%d7%a7%d7%98-%d7%a4%d7%99%d7%aa%d7%95/</link>
		<comments>http://vadimg.com/2011/03/14/%d7%93%d7%a8%d7%95%d7%a9-%d7%a4%d7%a8%d7%99%d7%9c%d7%a0%d7%a1%d7%a8%d7%99%d7%aa-%d7%9c%d7%94%d7%a9%d7%aa%d7%9c%d7%91%d7%95%d7%aa-%d7%91%d7%a4%d7%a8%d7%95%d7%99%d7%a7%d7%98-%d7%a4%d7%99%d7%aa%d7%95/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 16:50:38 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=914</guid>
		<description><![CDATA[דרוש פרילנסר/ית להשתלבות בפרויקט פיתוח צד שרת מעל Yii Framework , במסגרת פרויקט ארוך טווח לפיתוח פלטפורמת ניהול ואתרי תוכן לימודי מבוססי משחקים. מדובר בעבודה מהבית תוך השתלבות בצוות פיתוח. להלן דרישות התפקיד 1. ניסיון בפיתוח PHP , HTML , JS ,  JQUERY. 2. ניסיון ב-YII Framework ו/או נכונות ללמוד את ה-Framework. 3. תקשורת בינאישית טובה להשתלבות בצוות פיתוח 4. יכולת להוביל תכולה מרמת האפיון [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl"><span style="font-size: small;">דרוש פרילנסר/ית להשתלבות בפרויקט פיתוח צד שרת מעל Yii Framework , במסגרת פרויקט ארוך טווח לפיתוח פלטפורמת ניהול ואתרי תוכן לימודי מבוססי משחקים. מדובר בעבודה מהבית תוך השתלבות בצוות פיתוח.</span></p>
<p dir="rtl"><span style="font-size: small;">להלן דרישות התפקיד</span></p>
<p dir="rtl"><span style="font-size: small;">1.</span> <span style="font-size: small;">ניסיון בפיתוח PHP , HTML , JS ,  JQUERY.</span></p>
<p dir="rtl"><span style="font-size: small;">2.</span> <span style="font-size: small;">ניסיון ב-YII Framework ו/או נכונות ללמוד את ה-Framework.</span></p>
<p dir="rtl"><span style="font-size: small;">3.</span> <span style="font-size: small;">תקשורת בינאישית טובה להשתלבות בצוות פיתוח</span></p>
<p dir="rtl"><span style="font-size: small;">4.</span> <span style="font-size: small;">יכולת להוביל תכולה מרמת האפיון ועד רמת המוצר.</span></p>
<p dir="rtl"><span style="font-size: small;">במידה ואת/ה מתאים ומעוניין להשתלב בפרויקט. נשמח שתיצור איתנו קשר.</span></p>
<p dir="rtl"><span style="font-size: small;">תודה</span></p>
<p dir="rtl"><span style="font-size: small;">אסף</span></p>
<p dir="rtl"><span style="font-size: small;">אי-מייל: <a href="mailto:ayosifov@hotmail.com" target="_blank">ayosifov@hotmail.com</a></span></p>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.550 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2011/03/14/%d7%93%d7%a8%d7%95%d7%a9-%d7%a4%d7%a8%d7%99%d7%9c%d7%a0%d7%a1%d7%a8%d7%99%d7%aa-%d7%9c%d7%94%d7%a9%d7%aa%d7%9c%d7%91%d7%95%d7%aa-%d7%91%d7%a4%d7%a8%d7%95%d7%99%d7%a7%d7%98-%d7%a4%d7%99%d7%aa%d7%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</title>
		<link>http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/</link>
		<comments>http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 08:21:01 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[php bug]]></category>
		<category><![CDATA[php bug tracker]]></category>
		<category><![CDATA[php bug traker]]></category>
		<category><![CDATA[php tracker]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=908</guid>
		<description><![CDATA[After a good amount of time that i&#8217;ve put into this system i can finally see it&#8217;s progress and it sure made some good progress. We still have lots of things to do, But we are proud of what we achieved up until now. Couple of days ago i saw the instant search suggestion feature in [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">
<p>After a good amount of time that i&#8217;ve put into this system i can finally see it&#8217;s progress and it sure made some good progress. We still have lots of things to do, But we are proud of what we achieved up until now. Couple of days ago i saw the instant search suggestion feature in one of the websites i was browsing, I thought it&#8217;s a really cool and neat idea to put this in the tracker so anyone could instantly see the search results for this keywords, So last night i&#8217;ve completed this feature and it works great. In any moment one can just hit the Advanced Search link to go to the full search page that allows him to search tickets based on certain criteria like title, keywords, who reported the ticket, assigned to, status, type, category, version, priority etc..</p>
<p>One more thing that was added in the advanced search is the ability to perform Multi-Moderation right from the search results page on the tickets you&#8217;ve chosen. That multi-moderation feature will certainly make a difference and will make bug tracking a lot easier. If you have searched the system it will remember your search terms for the session or until you hit the reset button, So if for example you searched for tickets based on certain criteria then visited that ticket and came back to the advanced search page it will remember your search conditions you entered and will show the relevant results just like you left it before you entered the single ticket.</p>
<p>In the ticket view screen you will be able to update the ticket properties and/or add a comment to the ticket. Comments are ordered by date submitted when the oldest comment is the first one and the newest comment is the last comment.</p>
<p>To see the tracker in action online just visit: <a href="http://vadimg.com/tracker" target="_blank">http://vadimg.com/tracker</a> (This is temporary until i figure out a name for it to purchase a domain)</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/26/php-bug-tracker-tickets-multi-moderation-filtering/" rel="bookmark" title="11/26/2010">PHP Bug Tracker &#8211; Tickets Multi-Moderation &#038; Filtering</a> &#8211; 11/26/2010</li>
<li><a href="http://vadimg.com/2010/11/25/php-bug-tracker-tickets-sneak-peak/" rel="bookmark" title="11/25/2010">PHP Bug Tracker &#8211; Tickets &#8211; Sneak Peak</a> &#8211; 11/25/2010</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2009/08/06/custom-test-center/" rel="bookmark" title="08/06/2009">Custom Test Center</a> &#8211; 08/06/2009</li>
</ul>
<p><!-- Similar Posts took 7.435 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Bug Tracker &#8211; Tickets Multi-Moderation &amp; Filtering</title>
		<link>http://vadimg.com/2010/11/26/php-bug-tracker-tickets-multi-moderation-filtering/</link>
		<comments>http://vadimg.com/2010/11/26/php-bug-tracker-tickets-multi-moderation-filtering/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 19:11:35 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[php bug]]></category>
		<category><![CDATA[php bug tracker]]></category>
		<category><![CDATA[php tracker]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=900</guid>
		<description><![CDATA[One of the features i really want in my bug tracker is the ability to quickly filter tickets to get the ones i am looking for, Although this is rather the start of the actual ticket filtering engine it does show the . The other feature this video shows is another needed feature that allows [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">One of the features i really want in my bug tracker is the ability to quickly filter tickets to get the ones i am looking for, Although this is rather the start of the actual ticket filtering engine it does show the .</div>
<div style="text-align: left; direction: ltr;">The other feature this video shows is another needed feature that allows each person to quickly update several tickets right from the ticket listing screen, I call it the ticket multi-moderation as that&#8217;s what it does.</div>
<div style="text-align: left; direction: ltr;"><span id="more-900"></span></div>
<div style="text-align: left; direction: ltr;">This is pretty much just the start of the tickets features, There are a lot of MUST HAVE features i will add that will make bug tracking much much easier, I will give more details as i develop them. For now here is a quick video demonstrating the quick ticket filtering (not the custom query generator coming ahead) and the ticket multi-moderation.</div>
<div style="text-align: left; direction: ltr;"></div>
<div style="text-align: left; direction: ltr;">&nbsp;</div>
<div style="text-align: left; direction: ltr;"></div>
<div style="text-align: left; direction: ltr;"><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/QKoWfVGQfo4?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QKoWfVGQfo4?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/" rel="bookmark" title="12/02/2010">PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</a> &#8211; 12/02/2010</li>
<li><a href="http://vadimg.com/2010/11/25/php-bug-tracker-tickets-sneak-peak/" rel="bookmark" title="11/25/2010">PHP Bug Tracker &#8211; Tickets &#8211; Sneak Peak</a> &#8211; 11/25/2010</li>
<li><a href="http://vadimg.com/2010/10/18/bug-tracker-project/" rel="bookmark" title="10/18/2010">PHP Bug Tracker Project</a> &#8211; 10/18/2010</li>
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
</ul>
<p><!-- Similar Posts took 7.196 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/11/26/php-bug-tracker-tickets-multi-moderation-filtering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Bug Tracker &#8211; Tickets &#8211; Sneak Peak</title>
		<link>http://vadimg.com/2010/11/25/php-bug-tracker-tickets-sneak-peak/</link>
		<comments>http://vadimg.com/2010/11/25/php-bug-tracker-tickets-sneak-peak/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 16:32:08 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[php bug]]></category>
		<category><![CDATA[php bug tracker]]></category>
		<category><![CDATA[php tracker]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=891</guid>
		<description><![CDATA[Just wanted to share everyone with the bug tracking software progress, I have started working on the Tickets feature and so far so good, Here are a couple of screenshots that display the ticket listing and creating a ticket form. You can clearly see that it supports UTF8 in both titles and URLs. Similar Posts [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">Just wanted to share everyone with the bug tracking software progress, I have started working on the Tickets feature and so far so good, Here are a couple of screenshots that display the ticket listing and creating a ticket form. You can clearly see that it supports UTF8 in both titles and URLs.</div>
<div style="text-align: left; direction: ltr;"><span id="more-891"></span></div>
<div style="text-align: left; direction: ltr;"><a href="http://vadimg.com/wp-content/uploads/2010/11/Screen-shot-2010-11-25-at-6.25.52-PM.png" rel="lightbox[891]"><img class="aligncenter" title="Ticket Listing" src="http://vadimg.com/wp-content/uploads/2010/11/Screen-shot-2010-11-25-at-6.25.52-PM.png" alt="" width="487" height="287" /></a><a href="http://vadimg.com/wp-content/uploads/2010/11/Screen-shot-2010-11-25-at-6.26.15-PM.png" rel="lightbox[891]"><img class="aligncenter" title="Creating a ticket" src="http://vadimg.com/wp-content/uploads/2010/11/Screen-shot-2010-11-25-at-6.26.15-PM.png" alt="" width="337" height="289" /></a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/26/php-bug-tracker-tickets-multi-moderation-filtering/" rel="bookmark" title="11/26/2010">PHP Bug Tracker &#8211; Tickets Multi-Moderation &#038; Filtering</a> &#8211; 11/26/2010</li>
<li><a href="http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/" rel="bookmark" title="12/02/2010">PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</a> &#8211; 12/02/2010</li>
<li><a href="http://vadimg.com/2010/10/18/bug-tracker-project/" rel="bookmark" title="10/18/2010">PHP Bug Tracker Project</a> &#8211; 10/18/2010</li>
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
</ul>
<p><!-- Similar Posts took 7.570 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/11/25/php-bug-tracker-tickets-sneak-peak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</title>
		<link>http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/</link>
		<comments>http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 21:15:04 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[php manager]]></category>
		<category><![CDATA[php project]]></category>
		<category><![CDATA[php project manager]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[project manager]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=884</guid>
		<description><![CDATA[This video presentation shows the wiki features of the upcoming php project manager application. Some of the main features the wiki have built in are: Creating, Updating and deleting pages Archiving pages Previewing a page Ordering pages in various types of orders Display options for pages Setting a certain page as the application start page [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">
<p>This video presentation shows the wiki features of the upcoming php project manager application. Some of the main features the wiki have built in are:</p>
<ul>
<li>Creating, Updating and deleting pages</li>
<li>Archiving pages</li>
<li>Previewing a page</li>
<li>Ordering pages in various types of orders</li>
<li>Display options for pages</li>
<li>Setting a certain page as the application start page</li>
<li>Revision control for pages</li>
<li>Compare differences between pages revisions</li>
<li>Restore a page from one of it&#8217;s revisions</li>
<li>Delete a single revision or a page with all it&#8217;s revisions</li>
<li>Friendly and secured content editor</li>
<li>Assign pages to certain projects</li>
<li>Adding a reason for editing the page when editing a wiki page</li>
<li>Logs all changes done in the wiki in the activity section of the application</li>
<li>Friendly URL&#8217;s for pages</li>
</ul>
<p><iframe src="http://player.vimeo.com/video/16974696" width="500" height="306" frameborder="0"></iframe>
<p><a href="http://vimeo.com/16974696">PHP Project Manager &#8211; Wiki Pages</a> from <a href="http://vimeo.com/user2864912">vadim gabriel</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/" rel="bookmark" title="10/23/2010">PHP Project Manager &#8211; Creating &#038; Updating Projects</a> &#8211; 10/23/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
</ul>
<p><!-- Similar Posts took 7.738 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</title>
		<link>http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/</link>
		<comments>http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 09:20:53 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[compare]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[diff class]]></category>
		<category><![CDATA[difference]]></category>
		<category><![CDATA[difference class]]></category>
		<category><![CDATA[highlight]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[pear text]]></category>
		<category><![CDATA[php diff]]></category>
		<category><![CDATA[php difference]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[php5.3 diff]]></category>
		<category><![CDATA[php5.3 difference]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[text class]]></category>
		<category><![CDATA[text compare]]></category>
		<category><![CDATA[text diff class]]></category>
		<category><![CDATA[text difference]]></category>
		<category><![CDATA[text difference class]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=873</guid>
		<description><![CDATA[I was looking for a class that used PEAR Text Classes, To find the difference between two strings, I found a few but one got my attention. That one was created by Ciprian Popovic, Which was written in PHP, But was not really the way i want it to be, I was looking for a [...]]]></description>
			<content:encoded><![CDATA[
<div style='direction: ltr; text-align: left;'>
I was looking for a class that used PEAR Text Classes, To find the difference between two strings, I found a few but one got my attention.<br />
That one was created by <a href='http://software.zuavra.net/inline-diff/'>Ciprian Popovic</a>, Which was written in PHP,<br />
But was not really the way i want it to be, I was looking for a PHP Object Oriented one, So i have modified it a bit to fit my needs and thought i should share it.<br />
In Ciprian version you had two files that you had to have in order for this to work, I merged them and using a single class with a single call to a method you can get the difference between two strings.</p>
<h2>Usage</h2>
<pre class="brush: php">
&lt;?php
$string1 = &#039;i love green color&#039;;
$string2 = &#039;i love red colour&#039;;
require_once(&#039;TextDiff.php&#039;);
$diffObj = new TextDiff;
echo $diffObj-&gt;getDiff($string1, $strign2);
?&gt;
</pre>
<h2>Notes</h2>
<p>1. By default this class will set the error reporting level<br />
   to 0, So the PEAR Text classes won&#8217;t thrown any strict standards errors.<br />
   You can disable this by just defineing a constant named &#8216;TEXTDIFF_DISABLE_ERROR_REPORTING&#8217;<br />
   define(&#8216;TEXTDIFF_DISABLE_ERROR_REPORTING&#8217;, true);<br />
   before loading the TextDiff.php file.</p>
<p>2. By default this class will try to include the PEAR Text classes from the directory Text/*<br />
   Under the current working directory. If you already have your PEAR classes included or would like to include<br />
   them by yourself from a different location just set:<br />
   define(&#8216;TEXTDIFF_DISABLE_PEAR_INCLUDE&#8217;, true);<br />
   Before including the TextDiff.php class file. And make sure you include the PEAR Text classes<br />
   Before you include the TextDiff.php class file.</p>
<p>You can download the package, That includes the required class, The PEAR Text Classes, And a working example with two text files as the strings to compare between the two.</p>
<p>You can also define the prefix/suffix for the insert/delete values that will be prefixed/suffixed to the word/letters. Just browse the source code of the class and you will find a few class properties that you can modify.</p>
<p>That&#8217;s all.</p>
<h3><a href="http://vadimg.com/wp-content/uploads/2010/11/TextDiff.zip">Download TextDiff</a></h3>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/06/24/application-installer-wizard-class/" rel="bookmark" title="06/24/2009">Application Installer Wizard Class</a> &#8211; 06/24/2009</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
</ul>
<p><!-- Similar Posts took 7.590 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Project Manager &#8211; Creating &amp; Updating Projects</title>
		<link>http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/</link>
		<comments>http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/#comments</comments>
		<pubDate>Sat, 23 Oct 2010 18:26:06 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[manager]]></category>
		<category><![CDATA[php bug]]></category>
		<category><![CDATA[php bug tracker]]></category>
		<category><![CDATA[php project manager]]></category>
		<category><![CDATA[php tracker]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[project manager]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=865</guid>
		<description><![CDATA[Here is a short screencast on the new php project manager i am working on. This screencast shows the interface for creating and updating projects, And a small look into the activity feed. Today we&#8217;ve fixed and completed 15 issues, You can view them by visiting the following link Click Here. View In Full Screen [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a short screencast on the new php project manager i am working on. This screencast shows the interface for creating and updating projects, And a small look into the activity feed.</p>
<p>Today we&#8217;ve fixed and completed 15 issues, You can view them by visiting the following link <a href="http://ec2-184-73-237-100.compute-1.amazonaws.com/tracker/" target="_blank">Click Here</a>.</p>
<p><a href="http://www.screencast.com/t/IeQ9d33bp" target="_blank">View In Full Screen</a></p>
<p>Again, Comments and feedback are appreciated.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/" rel="bookmark" title="12/02/2010">PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</a> &#8211; 12/02/2010</li>
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
</ul>
<p><!-- Similar Posts took 7.675 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Project Manger – רשימת האפשרויות</title>
		<link>http://vadimg.com/2010/10/20/php-project-manger-%e2%80%93-%d7%a8%d7%a9%d7%99%d7%9e%d7%aa-%d7%94%d7%90%d7%a4%d7%a9%d7%a8%d7%95%d7%99%d7%95%d7%aa/</link>
		<comments>http://vadimg.com/2010/10/20/php-project-manger-%e2%80%93-%d7%a8%d7%a9%d7%99%d7%9e%d7%aa-%d7%94%d7%90%d7%a4%d7%a9%d7%a8%d7%95%d7%99%d7%95%d7%aa/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 12:56:48 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bug project]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[php bug]]></category>
		<category><![CDATA[php bug tracker]]></category>
		<category><![CDATA[php project]]></category>
		<category><![CDATA[php tracker]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[tracker project]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=861</guid>
		<description><![CDATA[התחלנו להוסיף את רשימת האפשרויות שנרצה להוסיף למערכת זו, ואנו מזמינים ומעודדים את המשתמשים לבוא ולהוסיף את האפשרויות אותם *הם* ירצו לראות במערכת וחושבים שאפשרויות אלו יעזרו לכלל המשתמשים. ניתן לרשום כל דבר שרק אפשר לחשוב עליו, אנו נשקול כל בקשה ובמידה ונחליט שהבקשה כן מתאימה להכנס לרשימת האפשרויות נוסיף אותה בעמוד בו ירוכזו כל [...]]]></description>
			<content:encoded><![CDATA[<p>התחלנו להוסיף את רשימת האפשרויות שנרצה להוסיף למערכת זו, ואנו מזמינים ומעודדים את המשתמשים לבוא ולהוסיף את האפשרויות אותם *הם* ירצו לראות במערכת וחושבים שאפשרויות אלו יעזרו לכלל המשתמשים. ניתן לרשום כל דבר שרק אפשר לחשוב עליו, אנו נשקול כל בקשה ובמידה ונחליט שהבקשה כן מתאימה להכנס לרשימת האפשרויות נוסיף אותה בעמוד בו ירוכזו כל הבקשות שאושרו ויתווספו.</p>
<p><span id="more-861"></span>הקמנו מערכת לניהול כל הבקשות בנוסף לכל הבעיות שיצוצו בהתקדמות הראשונית של המערכת ומשמשת כמעין רשימה מרוכזת של דברים שצריך לבצע, המערכת הינה Trac (מוזר שמערכת לניהול באגים מנוהלת על ידי מערכת מקבילה אחרת אבל זה לעת עתה), ניתן לגשת למערכת על ידי לחיצה על הקישור הבא:</p>
<p><a href="http://ec2-184-73-237-100.compute-1.amazonaws.com/tracker/" target="_blank">לחץ כאן!</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/10/18/bug-tracker-project/" rel="bookmark" title="10/18/2010">PHP Bug Tracker Project</a> &#8211; 10/18/2010</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/" rel="bookmark" title="10/23/2010">PHP Project Manager &#8211; Creating &#038; Updating Projects</a> &#8211; 10/23/2010</li>
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
</ul>
<p><!-- Similar Posts took 7.897 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/20/php-project-manger-%e2%80%93-%d7%a8%d7%a9%d7%99%d7%9e%d7%aa-%d7%94%d7%90%d7%a4%d7%a9%d7%a8%d7%95%d7%99%d7%95%d7%aa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Project Manager Feature List</title>
		<link>http://vadimg.com/2010/10/20/php-project-manger-feature-list/</link>
		<comments>http://vadimg.com/2010/10/20/php-project-manger-feature-list/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 12:55:57 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[bug project]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[php bug]]></category>
		<category><![CDATA[php bug tracker]]></category>
		<category><![CDATA[php project]]></category>
		<category><![CDATA[php tracker]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[tracker project]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=855</guid>
		<description><![CDATA[We have started writing down the things we would like to add to the PHP Project Manager we are developing, And would like to invite and encourage everyone to help us with listing down things you would like to see in *your* project manager, It can be anything and we will try to consider everything [...]]]></description>
			<content:encoded><![CDATA[<p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px} -->We have started writing down the things we would like to add to the PHP Project Manager we are developing, And would like to invite and encourage everyone to help us with listing down things you would like to see in *your* project manager, It can be anything and we will try to consider everything and add the requests we think that incorporating them into the application will benefit most of the users using it.</p>
<p><span id="more-855"></span></p>
<p>We have set up a Trac based Bug Tracker (Ironic i know) to control the feature requests and the To-Do list. You can enter the trace installation and view and add tickets by browsing the following URL:</p>
<p><a href="http://ec2-184-73-237-100.compute-1.amazonaws.com/tracker/" target="_blank">Click Here</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/" rel="bookmark" title="10/23/2010">PHP Project Manager &#8211; Creating &#038; Updating Projects</a> &#8211; 10/23/2010</li>
<li><a href="http://vadimg.com/2010/10/18/bug-tracker-project/" rel="bookmark" title="10/18/2010">PHP Bug Tracker Project</a> &#8211; 10/18/2010</li>
<li><a href="http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/" rel="bookmark" title="12/02/2010">PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</a> &#8211; 12/02/2010</li>
</ul>
<p><!-- Similar Posts took 7.750 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/20/php-project-manger-feature-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Bug Tracker Project</title>
		<link>http://vadimg.com/2010/10/18/bug-tracker-project/</link>
		<comments>http://vadimg.com/2010/10/18/bug-tracker-project/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 19:47:12 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[php bug tracker]]></category>
		<category><![CDATA[php tracker]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[באג טרקר]]></category>
		<category><![CDATA[ניהול באגים]]></category>
		<category><![CDATA[ניהול בעיות]]></category>
		<category><![CDATA[ניהול פרוייקטים]]></category>
		<category><![CDATA[פתרון באגים]]></category>
		<category><![CDATA[פתרון בעיות]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=845</guid>
		<description><![CDATA[לפני כמה ימים ניסיתי להתקין את Trac, למי שלא מכיר זוהי מערכת לניהול ומעקב אחר באגים (בעיות) בפרוייקט מסויים שעבדתי עליו, רציתי משהו שאני כבר אשתמש עבור כל הפרוייקטים, חיפוש בגוגל העלה כמה מועמדים אך Tracנמצא כאחד מהפופולרים ביותר. לאחר פרק זמן קצר המערכת הייתה כבר על השרת שלי באמזון, העלתי את כל מה שהיה [...]]]></description>
			<content:encoded><![CDATA[<p>לפני כמה ימים ניסיתי להתקין את <a href="http://trac.edgewall.org/" target="_blank">Trac</a>, למי שלא מכיר זוהי מערכת לניהול ומעקב אחר באגים (בעיות) בפרוייקט מסויים שעבדתי עליו, רציתי משהו שאני כבר אשתמש עבור כל הפרוייקטים, חיפוש בגוגל העלה כמה מועמדים אך <a href="http://trac.edgewall.org/" target="_blank">Trac</a>נמצא כאחד מהפופולרים ביותר.</p>
<p><span id="more-845"></span>לאחר פרק זמן קצר המערכת הייתה כבר על השרת שלי באמזון, העלתי את כל מה שהיה צריך ויצאתי לדרך בהתקנה. השלב הראשון קריאת דרישות המערכת (רשימה די ארוכה), מאחר והיא כתובה ב <a href="http://python.org/" target="_blank">Python</a>, יש כמובן צורך ב mod_python עבור Apache. לכן התחלתי בהתקנה שלו, לאחר מכן יש להגדיר סביבת עבודה עבור המערכת ויש צורך בלערוך את קובץ ההגדרות של השרת ולהוסיף מאפיינים ספציפיים למערכת זו (משהו שממש לא אהבתי לעשות), כברירת מחדל אין אפשרות לניהול משתמשים במערכת, כדי להוסיף משתמש צריך להגדיר קובץ הרשאות (htpasswd) שמכיל בתוכו את המשתמשים אשר מורשים להכנס למערכת, במקרה שלי אני היחידי שרשום בקובץ זה לכן השתמשתי בפרטים ונכנסתי, למרבה הפלא אני לא מנהל במערכת שכרגע התקנתי לכן צריך להריץ פקודה דרך Shell כדי להגדיר אותי כמנהל. בשלב הזה הייתי כבר די עייף מכל ההגדרות וההתקנה כולה, לא הגיוני שמשתמש פשוט שבסך הכל רוצה להוסיף לעצמו אפשרות לניהול הפרוייקטים שלו צריך לעבור כל כך הרבה כדי להתקין אותה, כל התהליך מהורדת הקבצים עד לכניסה למערכת עם הרשאות ניהול לקח כשעתיים +/-.</p>
<p>ישנם אלטרנטיבות, אך מערכת זו היא אחת מהנפוצות ביותר ומרבית החברות הגדולות משתמשות בה, אך מרביתן יכולות להרשות לעצמם להושיב משהו שיעשה את כל זה עבורם, מה בנוגע למשתמשים הרגילים, למפתחי האתרים שבסך הכל רוצים אפשרות לנהל את הפרוייקטים בצורה טובה יותר, עם מספיק אפשרויות כדי שיהיה אפשר לנהל את זה כמו שצריך אך עדיין לשמור על הפשטות של המערכת כדי שיהיה קל להתקין ולהשתמש בה.</p>
<p>חיפושי אחר מערכת כזו העלו מערכת אשר בעצם פלאגין עבור <a href="http://wordpress.org/" target="_blank">WordPress</a> בשם <a href="http://getqualitycontrol.com/" target="_blank">Quality Control</a>, מדהים מה שאותו בחור עשה עם בלוג ויצר לעצמו מערכת לניהול ותיעוד של באגים. אהבתי את הקונספט ואהבתי את המראה של כל הדבר הזה, חפשתי אחר העיצוב לראות אם הוא תחת רישיון חופשי לשימוש אך לצערי לא מצאתי לכן פניתי ליוצר אותה המערכת והעיצוב בבקשה לאפשר שימוש בעיצוב זה בפרוייקט עליו אני עובד, אותו פרוייקט הוא בעצם הסיבה לפוסט זה, אני עובד כבר כמה ימים על מערכת שתעשה בידיוק את מה שהיא צריכה לעשות ועדיין להשאר פשוטה כמה שאפשר, למרות שאני כבר עושה את הסקר שוק וקורא אודות מערכות אחרות כדי להבין מה הם מציעות מבחינת חוית משתמש ואפשרויות ורושם לעצמי את אותם הדברים כדי שאני אדע מה להוסיף למערכת בתהליך הפיתוח המתמשך.</p>
<p>לאלו ששואלים אודות המערכת והרשיון תחתיו היא תשוחרר, אז היא תיהיה מערכת קוד פתוח כדי שכולם יוכלו להנות ממנה (ברגע שהיא תשוחרר).<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-%e2%80%93-%d7%a8%d7%a9%d7%99%d7%9e%d7%aa-%d7%94%d7%90%d7%a4%d7%a9%d7%a8%d7%95%d7%99%d7%95%d7%aa/" rel="bookmark" title="10/20/2010">PHP Project Manger – רשימת האפשרויות</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2010/11/25/php-bug-tracker-tickets-sneak-peak/" rel="bookmark" title="11/25/2010">PHP Bug Tracker &#8211; Tickets &#8211; Sneak Peak</a> &#8211; 11/25/2010</li>
<li><a href="http://vadimg.com/2010/11/26/php-bug-tracker-tickets-multi-moderation-filtering/" rel="bookmark" title="11/26/2010">PHP Bug Tracker &#8211; Tickets Multi-Moderation &#038; Filtering</a> &#8211; 11/26/2010</li>
<li><a href="http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/" rel="bookmark" title="12/02/2010">PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</a> &#8211; 12/02/2010</li>
</ul>
<p><!-- Similar Posts took 6.479 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/18/bug-tracker-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 Zend Certified</title>
		<link>http://vadimg.com/2010/10/15/php-5-3-zend-certified/</link>
		<comments>http://vadimg.com/2010/10/15/php-5-3-zend-certified/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 18:07:00 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[פורומים]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[certified]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[zend certification]]></category>
		<category><![CDATA[zend certified]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=839</guid>
		<description><![CDATA[Just wanted to let everyone know that i took the new PHP 5.3 Zend Certification and passed it. I did not study as much as i did for the two previous ones but i did read about the new changes in PHP 5.3 and blogged about them as well as you can probably see in [...]]]></description>
			<content:encoded><![CDATA[<p>Just wanted to let everyone know that i took the new <a href="http://www.zend.com/en/services/certification/" target="_blank">PHP 5.3 Zend Certification</a> and passed it. I did not study as much as i did for the two previous ones but i did read about the new changes in PHP 5.3 and blogged about them as well as you can probably see in my recent blog posts.</p>
<p><span id="more-839"></span>I went and ordered my Voucher from the Zend Online Store the other day and took it today Friday Oct 15 at 10:00 GMT +2, Took me about 45 minutes to complete the entire test and once i submitted the results it took the system a second to calculate everything and provide me with the result that i passed.</p>
<p>I was quite in a shock, The questions were a lot harder (at least for me) then the previous two, Maybe it&#8217;s just because i did not study that hard, But in the questions i was not sure of i just used simple logic. I had lots of questions about the <a href="http://il2.php.net/spl" target="_blank">SPL (Standard PHP Library)</a>, <a href="http://php.net/manual/en/book.stream.php" target="_blank">Streams</a> (Options), And of course the new <a href="http://php.net/releases/5_3_0.php" target="_blank">PHP 5.3 Features</a> such as <a href="http://il2.php.net/manual/en/language.namespaces.php" target="_blank">Namespaces</a>, <a href="http://php.net/closures" target="_blank">Closures</a>, <a href="http://php.net/lsb" target="_blank">Late static bindin</a>g and pretty much everything i recently blogged about, So it turned out to be a good practice for me.</p>
<p>At the end of the day i&#8217;m glad with the way things turned out, One thing i am disappointed about is the fact that Zend increased the exam price (Again) from the usual $125 for PHP 5 to $195 for PHP 5.3. It&#8217;s amazing i spent over $450 for those tests, Not that i am complaining or anything but i don&#8217;t see a reason why they have to increase the price for every new exam they release, But that&#8217;s history.</p>
<div style="direction: ltr; text-align: left;">Overall i spend the following:</div>
<div style="direction: ltr; text-align: left;">PHP 5 &#8211; $125</div>
<div style="direction: ltr; text-align: left;">Zend Framework &#8211; $160</div>
<div style="direction: ltr; text-align: left;">PHP 5.3 &#8211; $195</div>
<p>Total: $480</p>
<div style="direction: ltr; text-align: left;">So once i get my Zend profile updated with the new certification logo i will update my Linkedin profile and my certificates that appear on the sidebar here on my blog. The logo is pretty neat and looks like this:</div>
<div style="direction: ltr; text-align: left;"><img class="alignleft" title="ZCEPHP5.3" src="http://static.zend.com/topics/zce-php5-3-logo.gif" alt="" width="73" height="68" /></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/04/03/zend-certified-%d7%a2%d7%9b%d7%a9%d7%99%d7%95-%d7%92%d7%9d-zend-framework-certified-engineer/" rel="bookmark" title="04/03/2009">Zend Certified? עכשיו גם Zend Framework Certified Engineer</a> &#8211; 04/03/2009</li>
<li><a href="http://vadimg.com/2009/02/24/zend-server-%d7%a1%d7%91%d7%99%d7%91%d7%aa-%d7%a4%d7%99%d7%aa%d7%95%d7%97-%d7%95%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-php-%d7%91%d7%9b%d7%9e%d7%94-%d7%93%d7%a7%d7%95%d7%aa/" rel="bookmark" title="02/24/2009">Zend Server &#8211; סביבת פיתוח ועבודה עם PHP בכמה דקות</a> &#8211; 02/24/2009</li>
<li><a href="http://vadimg.com/2009/08/06/custom-test-center/" rel="bookmark" title="08/06/2009">Custom Test Center</a> &#8211; 08/06/2009</li>
<li><a href="http://vadimg.com/2009/02/19/zend-framework-%d7%9c%d7%9e%d7%94-%d7%91%d7%90%d7%9e%d7%aa-%d7%9b%d7%93%d7%99-%d7%9c%d7%94%d7%a9%d7%aa%d7%9e%d7%a9-%d7%91%d7%94/" rel="bookmark" title="02/19/2009">Zend Framework &#8211; למה באמת כדי להשתמש בה?</a> &#8211; 02/19/2009</li>
<li><a href="http://vadimg.com/2009/02/19/%d7%94%d7%9b%d7%a0%d7%94-%d7%9c%d7%91%d7%97%d7%99%d7%a0%d7%94-%d7%a9%d7%9c-zend-%d7%93%d7%91%d7%a8%d7%99%d7%9d-%d7%a9%d7%a8%d7%a6%d7%95%d7%99-%d7%9c%d7%a2%d7%a9%d7%95%d7%aa/" rel="bookmark" title="02/19/2009">הכנה לבחינה של ZEND &#8211; דברים שרצוי לעשות</a> &#8211; 02/19/2009</li>
</ul>
<p><!-- Similar Posts took 7.280 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/15/php-5-3-zend-certified/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 &#8211; תוספות תחביר</title>
		<link>http://vadimg.com/2010/10/12/php-5-3-%d7%aa%d7%95%d7%a1%d7%a4%d7%95%d7%aa-%d7%aa%d7%97%d7%91%d7%99%d7%a8/</link>
		<comments>http://vadimg.com/2010/10/12/php-5-3-%d7%aa%d7%95%d7%a1%d7%a4%d7%95%d7%aa-%d7%aa%d7%97%d7%91%d7%99%d7%a8/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 16:28:29 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[additions]]></category>
		<category><![CDATA[nowdoc]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[SYNTAX]]></category>
		<category><![CDATA[syntax additions]]></category>
		<category><![CDATA[xyntax]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=826</guid>
		<description><![CDATA[עם כל השינויים המשמעותיים והתוספות ב PHP 5.3 ישנם כמה תוספות תחביר שמקלות ומאפשרות לכתוב את הקוד בצורה שונה, לפעמים גם יעילה יותר, ולפעמים גם קצרה יותר. סיקור קצר של כמה מתוספות התחביר ש PHP 5.3 מאפשרת, כמו: NOWDOC, Ternary Short Cut &#8216;?:&#8217;, Jump Label, ואת המתודה callStatic__. NOWDOC nowdoc דומה ל herdoc, אותם כללים תקפים [...]]]></description>
			<content:encoded><![CDATA[<p>עם כל השינויים המשמעותיים והתוספות ב PHP 5.3 ישנם כמה תוספות תחביר שמקלות ומאפשרות לכתוב את הקוד בצורה שונה, לפעמים גם יעילה יותר, ולפעמים גם קצרה יותר. סיקור קצר של כמה מתוספות התחביר ש PHP 5.3 מאפשרת, כמו: <em>NOWDOC, Ternary Short Cut &#8216;?:&#8217;, Jump Label</em>, ואת המתודה <em>callStatic__</em>.</p>
<p><span id="more-826"></span></p>
<h2>NOWDOC</h2>
<p><a href="http://il2.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc" target="_blank">nowdoc</a> דומה ל <a href="http://il2.php.net/manual/en/language.types.string.php#language.types.string.syntax.herdoc" target="_blank">herdoc</a>, אותם כללים תקפים גם ל <a href="http://il2.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc" target="_blank">nowdoc</a>, עם הבדל קטן שאין צורך בלהבריח תווים או משתנים בתוך הבלוק של ה-<a href="http://il2.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc" target="_blank">nowdoc</a> מאחר והוא לא מבצע שום עיבוד של משתנים בתוכו, בניגוד ל <a href="http://il2.php.net/manual/en/language.types.string.php#language.types.string.syntax.herdoc" target="_blank">herdoc</a>. דוגמא ל <a href="http://il2.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc" target="_blank">nowdoc</a>:</p>
<pre class="brush: php">
echo &lt;&lt;&lt;&#039;END_OF_HTML&#039;
$hello this is {$a-&gt;test}
END_OF_HTML;
</pre>
<p>בדוגמא למעלה הקוד ידפיס את התוכן הבא:</p>
<pre class="brush: php">
$hello this is {$a-&gt;test}
</pre>
<p>ללא המרכאות ( &#8216; ) הוא יהיה בדיוק כמו <a href="http://il2.php.net/manual/en/language.types.string.php#language.types.string.syntax.herdoc" target="_blank">herdoc</a> ולכן יחזיר את הערכים שהוצבו למשתנים בתוך בלוק הקוד.</p>
<h2>Ternary Short Cut</h2>
<p>עד היום היה ניתן לבצע את הפעולה הבאה:</p>
<pre class="brush: php">
$value = $expression ? $trueValue : $falseValue;
</pre>
<p>זה היה מפשט מאוד את כתיבת הקוד במידה והיינו צריכים לכתוב פקודת if בקצרה על שורה אחת בלבד. ב PHP 5.3 נוספה האפשרות לתחביר אף יותר קצר, בניגוד לדוגמא למעלה (שאנו בודקים אם expression$ מחזיר ערך השווה ל true, במידה וכן אז הערך שמגיע אחרי הסימן שאלה יוצב למשתנה value$ במידה והמשתנה expression$ מחזיר ערך השווה ל false מה שמגיע אחרי הנקודותיים יוצב למשתנה value$) אנו יכולים יכולים לכתוב את אותו הקוד בצורה קצרה יותר:</p>
<pre class="brush: php">
$value = $trueValue ?: $falseValue;
</pre>
<p>בעצם אופן הפעולה הוא שבמידה והערך trueValue$ מחזיר ערך השווה ל true זה הערך שיוצב למשתנה value$, במידה ולא מה שמגיע אחרי <img src='http://vadimg.com/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' />  שהוא בעצם המשתנה falseValue$ יוצב למשתנה value$. תוספת קטנה אך שוב, מקצרת לנו את הזמנים ונותנת לנו יותר גמישות בקוד.</p>
<h2>(Jump Label (Go To</h2>
<p>האופרטור <em>goto</em> ניתן לשימוש כדי לעבור (לקפוץ) אל חלק אחר בקוד. אותו מקום אליו אנו נעבור (או נקפוץ) מצויין על ידי תווית (מילה כלשהי) ולאחריו נקודותיים (:). ישנם מגבלות בשימוש עם <em>goto</em>. נקודת היעד צריכה להיות באותה הפונקציה/מתודה באותה המחלקה/קובץ, לא ניתן לקפוץ מקובץ לקובץ או מפונקציה/מתודה אל מחוצה לה, כמו כן לא ניתן לקפוץ אל תוך פונקציה או מתודה. בנוסף לכך אין אפשרות לקפוץ אל תוך לולאה כלשהי או פקודת <em>switch</em>, אך ניתן לקפוץ מחוץ לאלו, שימוש נפוץ ב <em>goto</em> יהיה במקום להשתמש בפקודת <em>;break x</em>, כשה-x הוא ערך הגדול מ-1 מה שגורם ל <em>break</em> לצאת מיותר מלולאה אחת (או יותר מפקודת switch אחת).</p>
<p>דוגמא לשימוש</p>
<pre class="brush: php">
&lt;?php
goto a;
echo &#039;Foo&#039;;

a:
echo &#039;Bar&#039;;
?&gt;
</pre>
<p>הדוגמא למעלה תדפיס Bar.</p>
<h2>callStatic</h2>
<p>זהו אומנם לא אפשרות תחביר אלה חלק מה OOP של PHP, אבל בכל זאת נסקר אותה בקצרה. בעת הקריאה למתודה סטטית שאינה קיימת, בדרך כלל PHP יזרוק שגיאת FATAL ERROR, החל מ PHP 5.3 ניתן גם &#8220;לתפוס&#8221; קריאה למתודה סטטית ולעבד/לנתח אותה בצורה דינאמית. הפונקציה הזו היא זהה לפונקציה ()call__, אשר ניתן להשתמש בה כדי לבצע פעולה מסויימת בעת הקריאה למתודה סטטית שאינה קיימת במחלקה, מונח זה גם נקרא <a href="http://il2.php.net/__callstatic" target="_blank">overloading</a>.</p>
<p>דוגמא קצת יותר ברורה:</p>
<pre class="brush: php">
&lt;?php
class MethodTest {
public function __call($name, $arguments) {
// Note: value of $name is case sensitive.
echo &quot;Calling object method &#039;$name&#039; &quot;
. implode(&#039;, &#039;, $arguments). &quot;\n&quot;;
}

/**  As of PHP 5.3.0  */
public static function __callStatic($name, $arguments) {
// Note: value of $name is case sensitive.
echo &quot;Calling static method &#039;$name&#039; &quot;
. implode(&#039;, &#039;, $arguments). &quot;\n&quot;;
}
}

$obj = new MethodTest;
$obj-&gt;runTest(&#039;in object context&#039;);

MethodTest::runTest(&#039;in static context&#039;);  // As of PHP 5.3.0
?&gt;
</pre>
<p>הקוד למעלה יחזיר את התוצאה הבאה:</p>
<pre class="brush: php">
Calling object method &#039;runTest&#039; in object context
Calling static method &#039;runTest&#039; in static context
</pre>
<p>שוב, לא שיפור כל כך גדול, אבל לפחות כעת אפשר גם לתפוס מקרים בהם מנסים לקרוא למתודה סטטית שאינה קיימת במחלקה.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/10/23/php-project-manager-creating-updating-projects/" rel="bookmark" title="10/23/2010">PHP Project Manager &#8211; Creating &#038; Updating Projects</a> &#8211; 10/23/2010</li>
<li><a href="http://vadimg.com/2012/03/31/usps-php-api-usage-examples/" rel="bookmark" title="03/31/2012">USPS PHP API &#8211; Usage Examples</a> &#8211; 03/31/2012</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
</ul>
<p><!-- Similar Posts took 6.866 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/12/php-5-3-%d7%aa%d7%95%d7%a1%d7%a4%d7%95%d7%aa-%d7%aa%d7%97%d7%91%d7%99%d7%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 Late Static Bindings</title>
		<link>http://vadimg.com/2010/10/12/php-5-3-late-static-bindings/</link>
		<comments>http://vadimg.com/2010/10/12/php-5-3-late-static-bindings/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 13:25:10 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[bindings]]></category>
		<category><![CDATA[late]]></category>
		<category><![CDATA[late static bindings]]></category>
		<category><![CDATA[php 5.3 late static bindings]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[static]]></category>
		<category><![CDATA[static bindings]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=816</guid>
		<description><![CDATA[PHP 5.3 כבר הציגה את עצמה ואת האפשרויות החדשות שהתווספו, אך בין כל האפשרויות שכבר עברנו עליהם ישנה עוד אפשרות אחת שהיא לא פחות חשובה, ויש צורך לעבור ולסקר גם אותה. האפשרות הזו היא Late Static Binding, שבתרגום חופשי זה &#8216;כבילה מאוחרת&#8217; (למתודות/מאפיינים סטטיות/סטטיים), ופשוטו כמשמעו מאפשר  לרתום או לקשור מתודה או מאפיין סטטי לאחר [...]]]></description>
			<content:encoded><![CDATA[<p>PHP 5.3 כבר הציגה את עצמה ואת האפשרויות החדשות שהתווספו, אך בין כל האפשרויות שכבר עברנו עליהם ישנה עוד אפשרות אחת שהיא לא פחות חשובה, ויש צורך לעבור ולסקר גם אותה. האפשרות הזו היא <em>Late Static Binding</em>, שבתרגום חופשי זה &#8216;כבילה מאוחרת&#8217; (למתודות/מאפיינים סטטיות/סטטיים), ופשוטו כמשמעו מאפשר  לרתום או לקשור מתודה או מאפיין סטטי לאחר הקמפול של הקוד.</p>
<p><span id="more-816"></span>הבעיה נובעת מהצורה בה מחלקות ב PHP מתייחסות אל עצמם, מילות מפתח כמו <em>self</em> הם מפוענחות בזמן הקומפילציה של הקוד ולא בזמן הרצה, ולכן זה אומר שמחלקות אשר יורשות ממחלקות אחרות, self תמיד יהיה מפוענח למחלקה בה הוא נמצא ולא במחלקה היורשת. ישנם הרבה מחלקות אשר מכילות פונקציונליות זהה בין המחלקות אך דורשות איזשהי תודעה של &#8220;באיזו מחלקה אני נמצא כרגע?&#8221;, בין אם זה לגשת למתודות המוגדרות במחלקה או למאפיינים בה כדי שהמתודה המוגדרת במחלקת האב תיהיה נגישה בכל המחלקות היורשות ממנה. ללא <em>Late Static Binding</em>, זה תמיד יפוענח למחלקה שהכריזה על המשתנה/מתודה, שמשאיר את הברירה למפתחים שנאלצים לבחור בין להעתיק/להדביק את אותה הפונקציה/מתודה עבור כל מחלקה שדורשת זאת או להפוך את המתודה הסטטית שלהם לאחת דינאמית, מאחר ו <em>this$</em> מפענח את זה תמיד כמו שצריך.</p>
<p>אני חושב שזה יהיה יותר ברור אם נציג דוגמא לכך. בדוגמא הבאה ישנה מחלקה בשם Base, אשר כל המחלקות הנוספות יורשות ממנה (לצורך הדוגמא):</p>
<pre class="brush: php">
class Base {

protected static $tableName = &#039;base&#039;;

public static function getTableName() {
return self::$tableName;
}
}
</pre>
<p>כעת כשיש לי את מחלקת הבסיס שלי, אני מוכן להתחיל לעבוד ולכתוב את המחלקות הנוספות אשר יורשות ממחלקה זו, אני אתחיל בזה שאני אכתוב מחלקה אשר מטפלת במשתמשים שלי, אקרא לה Users, אני אגדיר רק את המאפיין של שם הטבלה מאחר והיא משתמשת באותה המתודה (<em>getTableName</em>) של החזרה שם הטבלה, הטבלה שיצרתי תראה כך:</p>
<pre class="brush: php">
class Users extends Base {

protected static $tableName = &#039;users&#039;;

}
</pre>
<p>כעת, בעת הקריאה למתודה getTableName זה התוצאה שאני אקבל:</p>
<pre class="brush: php">
Users::getTableName();  // returns &quot;base&quot;
</pre>
<p>כמובן זה לא מה שאני ציפיתי או רציתי לקבל, אבל זה מה ש PHP נתן לי ויכול לתת. עד לגרסא 5.3, כעת אם נכניס לפעולה את  <em>Late Static Binding</em> אנו נכתוב את המחלקה הבסיס שוב פעם בצורה הבאה:</p>
<pre class="brush: php">
class Base {

protected static $tableName = &#039;base&#039;;

public static function getTableName() {
return static::$tableName;
}
}
</pre>
<p>(שימו לב לשינוי בין self ל static).</p>
<p>כעת כשנריך את הקוד שוב פעם נקבל את התוצאה הרצויה:</p>
<pre class="brush: php">
Users::getTableName(); // returns &quot;users&quot;
</pre>
<p>שינוי זה אומנם נראה לא כל כך משמעותי, אבל הוא מאפשר עכשיו יותר נגישות והתאמה אישית בין המחלקות, בנוסף לכל הוא יאפשר להדק את המחלקות שאנו נכתוב אף יותר ולחסוך את כל המתודות המיותרות שהיינו צריכים לשכפל בין המחלקות כי לא יכלנו לגשת למאפיינים של המחלקה אשר יורשת.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/06/24/application-installer-wizard-class/" rel="bookmark" title="06/24/2009">Application Installer Wizard Class</a> &#8211; 06/24/2009</li>
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2009/02/11/%d7%a9%d7%a8%d7%a9%d7%95%d7%a8-%d7%a4%d7%95%d7%a0%d7%a7%d7%a6%d7%99%d7%95%d7%aa-%d7%91%d7%9e%d7%97%d7%9c%d7%a7%d7%94/" rel="bookmark" title="02/11/2009">שרשור פונקציות במחלקה</a> &#8211; 02/11/2009</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
</ul>
<p><!-- Similar Posts took 7.016 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/12/php-5-3-late-static-bindings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 Namespaces</title>
		<link>http://vadimg.com/2010/10/12/php-5-3-namespaces/</link>
		<comments>http://vadimg.com/2010/10/12/php-5-3-namespaces/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 08:00:54 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[namespaces]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3 namespaces]]></category>
		<category><![CDATA[php features]]></category>
		<category><![CDATA[php namespaces]]></category>
		<category><![CDATA[php new features]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[php5.3 namespaces]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=806</guid>
		<description><![CDATA[Namespaces נוספו בגרסא PHP 5.3, זה אולי אחד הדברים שגורמים לגרסא זו לקבל כל כך הרבה תשומת לב, הרי Namespaces הם לא דבר חדש בתחום שפות התכנות הם קיימות בשפות אחרות כבר שנים ורק לאחרונה הם הוצגו גם לשפה זו. בתרגום חופשי Namespace הוא &#8220;מרחב&#8221;, וככה גם נפנה אליו בפוסט זה. Namespace בעצם מאפשרים למפתח [...]]]></description>
			<content:encoded><![CDATA[<p>Namespaces נוספו בגרסא PHP 5.3, זה אולי אחד הדברים שגורמים לגרסא זו לקבל כל כך הרבה תשומת לב, הרי Namespaces הם לא דבר חדש בתחום שפות התכנות הם קיימות בשפות אחרות כבר שנים ורק לאחרונה הם הוצגו גם לשפה זו. בתרגום חופשי Namespace הוא &#8220;מרחב&#8221;, וככה גם נפנה אליו בפוסט זה. Namespace בעצם מאפשרים למפתח להפריד את הקוד למודלים או קבוצות אשר גורם לקוד להיות יותר קריא. מרחבים מונעים התנגשויות בין שמות מחלקות ופונקציות, זה מאפשר שימוש במספר מחלקות בעלות אותו השם, כל זמן שהם נמצאים תחת מרחב שונה. מרחב גם גורם לסגנון הישן של שמות המחלקות ב Zend/Pear מיותר (Zend_Database_Mysql_Query) מאחר ולא יהיו יותר התנגשויות בין שמות המחלקות.</p>
<p><span id="more-806"></span></p>
<h2>הבסיס</h2>
<p>בכדי להגדיר מרחב פשוט צריך להשתמש במילה &#8216;<em>namespace</em>&#8216; ולאחר מכן את שם המרחב בו אתם רוצים לעשות שימוש. ניתן להגדיר תת-מרחב על ידי שימוש בסלאש (\). הנוהל בדרך כלל הוא שנתיב המרחב צריך להיות תואם לנתיב של התיקיה. לדוגמא, בקובץ <em>Framework/Database/Mysql/Query.php/</em> המרחב צריך להיות מוגדר כ <em>Framework\Database\Mysql</em> ושם המחלקה צריך להיות <em>Query</em>. כמו כן רצוי שיהיה מרחב אחד ומחלקה אחת בכל קובץ.</p>
<h2>שימוש ב Namespace</h2>
<p>נניח וישנו את הקובץ <em>lib/myClass.php/</em> אנו מגדירים בקובץ זה מרחב בשם <em>lib</em> ומגדירים מחלקה בשם <em>myClass</em>. בקובץ ה index.php אנו מוסיפים את המחלקה ויוצרים אובייקט שלה. מאחר ו <em>myClass</em> נמצאת תחת המרחב <em>lib</em>, אנו חייבים להתייחס אל המחלקה כ <em>lib\myClass</em>, ולא סתם <em>myClass</em> כמו שבדרך כלל היינו עושים.  ישנה אופציה חלופית לקבלת שמות המחלקות במרחב היא להשתמש במילה &#8216;<em>use</em>&#8216;. על ידי הגדרת אילו מחלקות אתם &#8217;משתמשים&#8217; (<em>using</em>) בהם בתחילת הסקריפט ניתן בקלות לצפות בקוד ולהבין אילו תלויות ישנם עבור כל עמוד. לדוגמא <em>use foo as bar</em> . זה בעצם משנה את שמה של המחלקה foo ל bar. יהיה צורך לבצע זאת במידה והנכם משתמשים (use) במחלקות בעלות אותו השם (אך תחת מרחב שונה). אחרת יווצרו שגיאות הנגרמות כתוצאה מהשם הזהה.</p>
<p>הקובץ <em>lib/myClass.php/</em></p>
<pre class="brush: php">
namspace lib;
class myClass
{
    public function foo()
    {
        echo &#039;hello world&#039;;
    }
}
</pre>
<p>הקובץ <em>index.php</em></p>
<pre class="brush: php">
require &#039;lib/myClass.php&#039;;

//Error, Class not found.
$bar = new myClass();

//Displays hello world on the screen.
$bar = new lib\myClass();
$bar-&gt;foo();

//Displays hello world on the screen
use lib\myClass;

$bar = new myClass();
$bar-&gt;foo();

//Displays hello world
use lib\myClass as newName;

$bar = new newName();
$bar-&gt;foo();
</pre>
<h2>יישום Autoloader</h2>
<p>במקום לנסות ולהוסיף כל קובץ שאתה חושב יעשה בו שימוש בסקריפט, ניתן ליישם את מתודת ה <em>autoloader__</em>, מתודה זו רצה בכל פעם שמנסים ליצור אובייקט ממחלקה שלא נוספה עדיין ולא נמצאה, במקרה כזה הפוקנציה נכנסת לפעולה ובתוכה ניתן להוסיף את הלוגיקה שבעצם בצורה דינאמית מוסיפה את המחלקה הרצויה. במתודה שלנו אנו יכולים &#8220;לתרגם&#8221; שם מחלקה שנמצא תחת מרחב לקובץ שאנו נרצה להוסיף אותו לסקריפט. נניח ואני כן עוקבים אחר הנהלים של מיפוי מרחבים לתיקיות שדנו קודם זה יהיה די פשוט.</p>
<pre class="brush: php">
function __autoload($class)
{
    $file = str_replace(&#039;\\&#039;, &#039;/&#039;, $class) . &#039;.php&#039;;
    if(file_exists($file))
    {
        require $file;
    }
}
</pre>
<p>אז אם היינו קוראים למחלקה:</p>
<pre class="brush: php">
$db = new \Zend\Database\Mysql\Query();
</pre>
<p>המתודה היתה נכנסת לפעולה ומוסיפה את הקובץ <em>Zend/Database/Mysql/Query.php</em> (במידה ועקבתם אחר הנהלים) תמצא מחלקה בשם <em>Query</em>.</p>
<h2>מחלקות פנימיות</h2>
<p>מחלקות אשר הם חלק מ PHP לא נמצאות. בקוד שכבר כתבת יהיה צורך להשתמש במחלקות של PHP כמו, Exception, StdClass, Mysqli ואחרים. בעת העבודה עם מרחבים יש לזכור לתת קידומת של סלאש (\) למחלקות אלו כדי להשתמש במחלקה מהמרחב הראשי, שהוא ספרית ה-PHP &#8211; ולא מתוך אחד מהספריות שלכם הנמצאים במרחב שהגדרתם אשר נקראים באותו השם כמחלקות בסיסיות אלו.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/02/19/%d7%91%d7%93%d7%99%d7%a7%d7%aa-%d7%96%d7%9e%d7%9f-%d7%98%d7%a2%d7%99%d7%a0%d7%94-%d7%91-php/" rel="bookmark" title="02/19/2009">בדיקת זמן טעינה ב PHP</a> &#8211; 02/19/2009</li>
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
<li><a href="http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/" rel="bookmark" title="08/13/2009">PHP Job Position &#8211; Center Tel-Aviv, Israel</a> &#8211; 08/13/2009</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
</ul>
<p><!-- Similar Posts took 7.241 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/12/php-5-3-namespaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 &#8211; Closures &amp; Lambda/Anonymous Functions</title>
		<link>http://vadimg.com/2010/10/11/php-5-3-closures-lambdaanonymous-functions/</link>
		<comments>http://vadimg.com/2010/10/11/php-5-3-closures-lambdaanonymous-functions/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 19:05:29 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[Anonymous]]></category>
		<category><![CDATA[closures]]></category>
		<category><![CDATA[lambda]]></category>
		<category><![CDATA[php5.3]]></category>
		<category><![CDATA[use]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=794</guid>
		<description><![CDATA[אחד מהאפשרויות החדשות שהוצגו ב PHP 5.3 הן האפשרות ליצור פונקציות בזמן הרצת הסקריפט, ללא צורך בהגדרת פונקציה עבור פעולה שמתבצעת ספציפית באותו המקום. Closures היא מילה נרדפת ל Lambda Function ו Anonymous Function, בדומה ל JS אפשרות זו יוצרת פונקציה וניתן להציב אותו למשתנה כלשהו. בתור התחלה זה יכול להראות כמשהו שהוא לא כל [...]]]></description>
			<content:encoded><![CDATA[<p>אחד מהאפשרויות החדשות שהוצגו ב PHP 5.3 הן האפשרות ליצור פונקציות בזמן הרצת הסקריפט, ללא צורך בהגדרת פונקציה עבור פעולה שמתבצעת ספציפית באותו המקום. Closures היא מילה נרדפת ל Lambda Function ו Anonymous Function, בדומה ל JS אפשרות זו יוצרת פונקציה וניתן להציב אותו למשתנה כלשהו. בתור התחלה זה יכול להראות כמשהו שהוא לא כל כך שימושי ופרקטי אבל עם הזמן אני מניח שיעשה יותר שימוש באפשרות זו.</p>
<p><span id="more-794"></span></p>
<h2>דוגמא ל Closure</h2>
<pre class="brush: php">
&lt;?php
$closure = function($argument) { echo $argument; };
$closure = function($argument) use ($someVar) { // implement the &#039;use&#039; keyword to store $someVar into the closure scope
echo $argument . &#039; &#039; . $someVar;
};
?&gt;
</pre>
<p>לאלו מכם שמכירים ועבדו עם create_function בעבר, זה נראה דומה, אך דרך הפעולה של PHP בשניהם הוא שונה. האחד מקומפל בזמן הרצת הסקריפט בניגוד לשני שהוא מקומפל בזמן הקמפול של הסקריפט על ידי המנוע של PHP. השימוש ב create_function הוא ממש לא מומלץ.</p>
<h2>דוגמאות לשימוש</h2>
<pre class="brush: php">
&lt;?php
$square = function($x)
{
    return $x*$x;
};
print $square(2);
?&gt;
</pre>
<p>הקוד למעלה יחזיר את התוצאה 4.</p>
<p>אפשר כמובן להשתמש בזה בתוך פונקציה לדוגמא</p>
<pre class="brush: php">
&lt;?php
function testFunction($number) {
    $sub = function($number) {
        return $number - 10;
    }
    return $sub;
}
echo testFunction(20);
?&gt;
</pre>
<p>הקוד למעלה תחזיר את הערך 10.</p>
<p>שימוש נפוץ נוסף הוא האפשרות להשתמש בהם בתוך פונקציות שדורשות שתציב פונקציה כלשהי שמטפלת במשתנים/ערכים שהיא מעבירה אליה. לדוגמא,</p>
<pre class="brush: php">
&lt;?php
print_r(
    array_map(
        function ($n) { return $n*$n; },
        array(1,2,3,4,5)
    )
);
?&gt;
</pre>
<p>הקוד למעלה ידפיס את הנתון הבא:</p>
<pre class="brush: php">
Array
(
    [0] =&gt; 1
    [1] =&gt; 4
    [2] =&gt; 9
    [3] =&gt; 16
    [4] =&gt; 25
)
</pre>
<p>בנוסף לכך, PHP 5.3 ישנה אפשרות בשם ()invoke__ אשר בעצם מאפשר קריאה למחלקה כפונקציה אנונימית, קצת קשה יהיה להסביר את זה אני מקווה שדוגמא תעזור יותר:</p>
<pre class="brush: php">
&lt;?php
class MyCustomClosure {
    function __invoke() {
        echo &quot;I&#039;m not really a closure, but you can treat me as one\n&quot;;
    }
}
$closure = new MyCustomClosure();
$closure();
?&gt;
</pre>
<p>שוב זה אומנם נראה כמו משהו שהוא לא כל כך שמיש, אבל עם הזמן זה יתפתח למשהו שכן יעשה בו שימוש רב.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-3-%d7%94%d7%aa%d7%97%d7%91%d7%a8%d7%95%d7%aa-%d7%9c%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%a8%d7%a6%d7%aa-%d7%a9%d7%90%d7%99%d7%9c%d7%aa%d7%95/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 3 &#8211; התחברות למסד נתונים הרצת שאילתות על גבי מסד הנתונים</a> &#8211; 09/28/2010</li>
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
</ul>
<p><!-- Similar Posts took 8.088 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/11/php-5-3-closures-lambdaanonymous-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>בלוגים טכנולוגיים</title>
		<link>http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/</link>
		<comments>http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 21:04:29 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[בלוגים]]></category>
		<category><![CDATA[טכנולוגיים]]></category>

		<guid isPermaLink="false">http://vadimg.com/?p=776</guid>
		<description><![CDATA[בין אם אתם כותבים או לומדים בתור תחביב או כי אין לכם משהו אחר לעשות, או במידה ואתם אנשים טכנולוגים שבעצם עובדים מדי יום ואף מתפרנסים מזה, תמיד כדי להתעדכן בכל מה שחדש בטכנולוגיה, מדי יום נעשים שינויים, מתווספים דברים חדשים לעולם הפיתוח, וקמים סטארטאפים חדשים אשר טוענים שהם הדבר הבא בעולם הטכנולוגי. הפוסט הזה [...]]]></description>
			<content:encoded><![CDATA[<p>בין אם אתם כותבים או לומדים בתור תחביב או כי אין לכם משהו אחר לעשות, או במידה ואתם אנשים טכנולוגים שבעצם עובדים מדי יום ואף מתפרנסים מזה, תמיד כדי להתעדכן בכל מה שחדש בטכנולוגיה, מדי יום נעשים שינויים, מתווספים דברים חדשים לעולם הפיתוח, וקמים סטארטאפים חדשים אשר טוענים שהם הדבר הבא בעולם הטכנולוגי. הפוסט הזה הוא פשוט מאוד, הוא מציג רשימה של בלוגים/אתרים שעזרו לי ועדיין עוזרים מדי יום בלמידה על העולם שבעצם לעולם לא נגמר וכל יום מתעדכן במשהו חדש, מרבית האתרים הינם באנגלית, אך אולי תמצאו כאן גם כמה אתרים בעברית שכתובים בפורמט שאפשר בעצם לשבת ולקרוא וללמוד מהם.</p>
<p><span id="more-776"></span><a href="http://shiflett.org."><img class="aligncenter" title="Chris Shiflett" src="http://shiflett.org/img/logo.gif" alt="" width="250" height="50" /></a></p>
<p>זה אולי אחד הבלוגים הטובים ביותר אפשר למצוא כיום (אם לא הטוב ביותר) מבחינת תוכן ענייני, עדכונים שוטפים, כתיבה ברמה מאוד גבוה וכל זה תחת קורת גג אחת. מי שלא מכיר את Chris הוא אחד מהאנשים המשפיעים ביותר בעולם ה PHP וברשת בכלל, הוא כתב מספר ספרים אשר מתמחים בעיקר באבטחת מידע ואבטחת מערכות. הוא חבר פעיל בצוות הפיתוח של PHP ומשמש גם כמרצה במספר מקומות.</p>
<p><a href="http://zmievski.org/"><img class="aligncenter" title="ANDREI ZMIEVSKI" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.19.37-PM.png" alt="" width="443" height="86" /></a></p>
<p>עוד דמות מרכזית בעולם ה PHP, כאחד מצוות הפיתוח המרכזי של PHP, הוא אחראי על כל הנושא של Unicode ועבד רבות על PHP 6, בין השאר הוא עבד על מערכות כמו Smarty, יצר את PHP-GTK, כתב מספר ספרים ביניהם (PHP COOKBOOK) הוא גם מרצה אודות PHP במספר מקומות. בבלוג שלו תמצאו פחות עניין בנושא פיתוח מאחר והוא כותב גם דברים אודות החיים הפרטיים שלו. אבל כדי להציץ מדי פעם.</p>
<p><a href="http://derickrethans.nl/"><img class="aligncenter" title="Derick Rethans" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.25.09-PM.png" alt="" width="330" height="79" /></a></p>
<p>זהו איש מאוד מרכזי לכל אלו שמשתמשים בתוסף XDEBUG, הוא בעצם זה שכתב את התוסף הזה עבור PHP. יש לו הרבה ידע גם בכל הנושא של GeoLocation ולדעתי הוא עובד גם עכשיו על תוסף כלשהו או מחלקה כלשהי שמבצעת פעולות מסוימות הקשורות למיקום גיאוגרפי. הפוסטים שלו אומנם לא מתעדכנים בתכיפות אך יש לו הרבה מה להציע וללמד בכל הנושא של סדרי עדיפויות, ביצועים וכיצד אפשר ליעל קוד ולבצע בדיקות כדי לעלות על מקומות אשר כוללים בתוכם נזילות זכרון.</p>
<p><a href="http://eliw.wordpress.com/"><img class="aligncenter" title="Eli White" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.26.48-PM.png" alt="" width="290" height="61" /></a></p>
<p>הוא העורך הראשי של האתר <a href="http://devzone.zend.com/public/view" target="_blank">devzone.zend.com</a> הבלוג שלו מכיל בעיקר פוסטים ומידע אודות חיו הפרטיים שזה פחות מעניין לנו, אבל מדי פעם הוא כותב משהו שקשור ל PHP שבדרך כלל לא תמצאו במקום אחר, הוא נותן דוגמאות מחיי היום יום שאלו הם הדוגמאות הטובות ביותר אפשר לקבל.</p>
<p><a href="http://www.snailinaturtleneck.com/blog/"><img class="aligncenter" title="Kristina Chodorow" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.27.08-PM.png" alt="" width="381" height="70" /></a></p>
<p>בלוג שהתחלתי לעקוב אחריו ולקרוא רק לאחרונה, לאחר שהתחלתי להתעניין ולעבוד עם <a href="http://www.mongodb.org/" target="_blank">MongoDB</a>, היא אחת מהאנשים שעובדים על <a href="http://www.mongodb.org/" target="_blank">MongoDB</a> ובעצם כותבת כל הזמן בנושא הזה. אפשר למצוא שם כל מיני עזרים ודרכים כיצד לבצע פעולות מסוימות שהיינו מבצעים בעזרת מסדי נתונים אחרים עם <a href="http://www.mongodb.org/" target="_blank">MongoDB</a>. נוסף לכל היא גם זו שכתבה את התוסף של MongoDB ל PHP ככה שהיא מאוד בקיעה בנושא הזה גם כן.</p>
<p><a href="http://weierophinney.net/matthew/"><img class="aligncenter" title="Matthew Weier O'Phinney" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.27.20-PM.png" alt="" width="447" height="76" /></a></p>
<p>זהו אחד מהאנשים המשפיעים ביותר בעולם של <a href="http://framework.zend.com" target="_blank">Zend Framework</a>, הוא נכנס לתפקיד של מנהל המוצר של <a href="http://framework.zend.com" target="_blank">Zend Framework</a> לפני כשנה, מאז הוא הוביל את <a href="http://framework.zend.com" target="_blank">Zend Framework</a> למקום בו היא נמצאת כיום, ככלי עזר רב תכליתי. הוא כותב בעיקר על <a href="http://framework.zend.com" target="_blank">Zend Framework</a> והבלוג שלו מתעדכן באופן קבוע, אם אתם עובדים עם <a href="http://framework.zend.com" target="_blank">Zend Framework</a> אז כדי מאוד להכנס ולעניין בלוג זה.</p>
<p><a href="http://akrabat.com/"><img class="aligncenter" title="Rob Allen" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.27.38-PM.png" alt="" width="482" height="72" /></a></p>
<p>רוב גם הוא, בעיקר כותב על <a href="http://framework.zend.com" target="_blank">Zend Framework</a>, הוא אחד מהסופרים שכתבו וערכו את הספר Zend Framework In Action (שדרך אגב קראתי אותו), שמאוד שימושי ומומלץ לאלו שמתחילים לעבוד עם <a href="http://framework.zend.com" target="_blank">Zend Framework</a>, הוא נותן דוגמאות חיות של דברים שנעשים מדי יום שאפשר לבצע אותם בקלות בעזרת <a href="http://framework.zend.com" target="_blank">Zend Framework</a>, מלבד הספר הוא מפרסם מדי פעם אודות <a href="http://framework.zend.com" target="_blank">Zend Framework</a> חידושים ועדכונים בנוסף לנושאים כלליים אחרים ב PHP.</p>
<p><a href="http://sebastian-bergmann.de/"><img class="aligncenter" title="Sebastian Bergmann" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.33.53-PM.png" alt="" width="500" height="79" /></a></p>
<p>זהו האיש שפיתח את <a href="http://www.phpunit.de/" target="_blank">PHPUnit</a>, לאלו שלא מכירים זהו כלי המאפשר בדיקה של קוד (לא תקינות קוד אלה לבדוק אם הקוד עושה את מה שהוא אמור לעשות). בנוסף לכך הוא הקים את <a href="http://thephp.cc/" target="_blank">thePHP.cc</a> אשר מספקת שירותי יעוץ והדרכה ב PHP. הבלוג שלו מכיל בעיקר נושאים הקשורים ל <a href="http://www.phpunit.de/" target="_blank">PHPUnit</a>, כל מיני טיפים ומדריכים לשימוש מתקדם בכלי זה.</p>
<p><a href="http://prematureoptimization.org/blog/"><img class="aligncenter" title="Shahar Evron" src="http://vadimg.com/wp-content/uploads/2010/10/Screen-shot-2010-10-10-at-10.46.20-PM.png" alt="" width="378" height="56" /></a></p>
<p>הנה הייצוג הישראלי, הוא אומנם מנהל המוצר ב <a href="http://zend.com" target="_blank">Zend</a> אבל הוא מאוד פעיל בתחום הפיתוח גם כן, הוא כתב כמה רכיבים עבור <a href="http://framework.zend.com" target="_blank">Zend Framework</a>, מרבית ההתעסקות שלו היא מסביב ל <a href="http://www.zend.com/products/server/" target="_blank">Zend Server</a>, ולפעמים הוא יכתוב בבלוג על דברים שאתם בדרך כלל (או ממש) לא צריכים p: אבל בכל מקרה ישנם הרבה דברים שנכתבים שם שכדי מאוד לקרוא, גם אם לא תשתמשו בהם בזמן הקרוב.</p>
<p>אני חושב שזה מספיק בתור רשימה התחלתית, תתחילו לעקוב אם אתם עדיין לא עוקבים אחריהם, התעניינות וקריאה אודות מרכיבים חדשים תמיד עוזרת ומעשירה אותו.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/12/02/%d7%94%d7%aa%d7%a7%d7%a0%d7%94-%d7%95%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-xdebug/" rel="bookmark" title="12/02/2009">התקנה ושימוש ב XDEBUG</a> &#8211; 12/02/2009</li>
<li><a href="http://vadimg.com/2010/10/09/mongodb-%d7%97%d7%9c%d7%a7-1-%d7%94%d7%aa%d7%a7%d7%a0%d7%94/" rel="bookmark" title="10/09/2010">MongoDB &#8211; חלק 1 &#8211; התקנה</a> &#8211; 10/09/2010</li>
<li><a href="http://vadimg.com/2009/02/03/%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-%d7%90%d7%95-%d7%94%d7%aa%d7%97%d7%9c%d7%94-%d7%97%d7%93%d7%a9%d7%94/" rel="bookmark" title="02/03/2009">עבודה עם פריימוורק או התחלה חדשה?</a> &#8211; 02/03/2009</li>
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 2 &#8211; התקנת התוסף עבור PHP</a> &#8211; 09/28/2010</li>
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-3-%d7%94%d7%aa%d7%97%d7%91%d7%a8%d7%95%d7%aa-%d7%9c%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%a8%d7%a6%d7%aa-%d7%a9%d7%90%d7%99%d7%9c%d7%aa%d7%95/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 3 &#8211; התחברות למסד נתונים הרצת שאילתות על גבי מסד הנתונים</a> &#8211; 09/28/2010</li>
</ul>
<p><!-- Similar Posts took 6.760 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB &#8211; חלק 1 &#8211; התקנה</title>
		<link>http://vadimg.com/2010/10/09/mongodb-%d7%97%d7%9c%d7%a7-1-%d7%94%d7%aa%d7%a7%d7%a0%d7%94/</link>
		<comments>http://vadimg.com/2010/10/09/mongodb-%d7%97%d7%9c%d7%a7-1-%d7%94%d7%aa%d7%a7%d7%a0%d7%94/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 13:17:55 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[install mongo]]></category>
		<category><![CDATA[install mongod]]></category>
		<category><![CDATA[install mongodb]]></category>
		<category><![CDATA[mongod]]></category>
		<category><![CDATA[windows mongo]]></category>
		<category><![CDATA[windows mongodb]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=667</guid>
		<description><![CDATA[אי אפשר שלא לקרוא או לשמוע אודות MongoDB, כיום יותר ויותר מערכות ואפליקציות ממירות את המידע למסדי נתונים אשר לא כוללים בתוכם תרשים (Schema). כמו שאפשר היה להבין זה אומר ש-MongoDB הינו עוד מסד נתונים אשר מבוסס מאובייקטים בתוך מסמך/מסמכים בדומה לכמה אחרים שקיימים כבר ברשת. היופי במסד נתונים מסוג MongoDB הוא שאין צורך בלהגדיר וליצור טבלאות או עמודות אלה פשוט לקרוא להם ובמידה והאם אינם [...]]]></description>
			<content:encoded><![CDATA[<p>אי אפשר שלא לקרוא או לשמוע אודות MongoDB, כיום יותר ויותר מערכות ואפליקציות ממירות את המידע למסדי נתונים אשר לא כוללים בתוכם תרשים (Schema). כמו שאפשר היה להבין זה אומר ש-MongoDB הינו עוד מסד נתונים אשר מבוסס מאובייקטים בתוך מסמך/מסמכים בדומה לכמה אחרים שקיימים כבר ברשת. היופי במסד נתונים מסוג MongoDB הוא שאין צורך בלהגדיר וליצור טבלאות או עמודות אלה פשוט לקרוא להם ובמידה והאם אינם קיימים MongoDB יוצר אותם אוטומטית.</p>
<p><span id="more-667"></span></p>
<p>אנו לא נדבר על סוגי מסדי הנתונים הללו, ולא נשווה ביניהם, במקום אנו נסביר כיצד להתקין, ולהשתמש ב MongoDB בתור מסד הנתונים לאפליקציה הבאה אותה אתם כותבים, או לאפליקציה הנוכחית אם תרצו.</p>
<p><s>לפני שנתחיל חשוב לציין ש MongoDB עובד רק עם PHP 5.3 נכון לעכשיו (וזה מאחר והמפתחים טוענים שלקמפל אותו ל 5.2 פשוט מסובך מדי, אני מעולם לא קמפלתי קוד ב C לכן אני לא יודע מה זה אומר בידיוק), אז תוודאו שאתם מריצים PHP 5.3 לפני שאתם מנסים לעבוד עם MongoDB.</s><br />
MongoDB עובד עם גרסאות של PHP 5.2 ו 5.3. לכן בשני הגרסאות ניתן להשתמש במסד נתונים זה.</p>
<p>בחלק הזה ינתן הסבר כיצד להתקין ולהריץ את MongoDB על גבי שלושת מערכות ההפעלה: Windows, Linux, OS X &#8211; ובעברית ווינדוס, לינוקס ו OS X (מערכת ההפעלה של Apple).</p>
<h2>התקנת MongoDB על גבי ווינדוס -Windows</h2>
<h3>הורדת הקבצים</h3>
<p>הדרך הקלה ביותר (והמומלצת) להתקין את MongoDB היא על ידי הורדת הקבצים המקומפלים בהתאם למערכת ההפעלה.</p>
<h4>מערכות הפעלה מבוססת 32ביט</h4>
<p>יש <a href="http://www.mongodb.org/display/DOCS/Downloads" target="_blank">להוריד</a> את קובץ ה-ZIP ולחלץ את הקבצים למיקום המתאים. רצוי לבחור מהרשימה של &#8220;Production&#8221;.</p>
<h4>מערכות הפעלה מבוססות64ביט</h4>
<p>יש <a href="http://www.mongodb.org/display/DOCS/Downloads" target="_blank">להוריד</a> את קובץ ה-ZIP ולחלץ את הקבצים למיקום המתאים.</p>
<p><strong>הערה</strong>: ישנם <a href="http://blog.mongodb.org/post/137788967/32-bit-limitations" target="_blank">הגבלות</a> למערכות אשר מבוססות על 32ביט, לכן 64ביט הינו מומלץ.</p>
<h3>חילוץ הקבצים</h3>
<p>יש לחלץ את הקבצים מקובץ ה-ZIP שירד למיקום הנוח ביותר עבורכם, תוכלו לשנות את שם התיקיה מ-mongo-xxxxxxx ל- mongo בלבד, כדי לפשט את הדברים.</p>
<h3>יצירת תיקית המידע</h3>
<p>כברירת מחדל MongoDB יאחסן את הקבצים בנתיב data/db/ אך הוא אינו יוצר את התיקיה במידה והיא אינה קיימת. לכן כדי לוודא שהתיקיה קיימת במיקום המתאים כל מה שעליכם לעשות הוא להריץ את הפקודות הבאות בשורת הפקודות:</p>
<pre class="brush: php">
C:\&gt; mkdir \data
C:\&gt; mkdir \data\db
</pre>
<p>כמובן ניתן לבצע זאת לא דרך שורת הפקודות אלה ישירות דרך חלון תצוגה במערכת ההפעלה.</p>
<h3>הפעלת והרצת השרת</h3>
<p>הקבצים החשובים להרצה הראושנית הם:</p>
<p>1. mongod.exe &#8211; שרת מסד הנתונים</p>
<p>2. mongo.exe &#8211; שורת הפקודות לניהול המסד</p>
<p>בכדי להריץ את השרת יש ללחוץ על mongod.exe או להריץ את הפקודה הבאה דרך שורת הפקודות:</p>
<pre class="brush: php">
C:\&gt; cd \my_mongo_dir\bin
C:\my_mongo_dir\bin &gt; mongod
</pre>
<p>ניתן גם להריץ את שרת מסד הנתונים <a href="http://www.mongodb.org/display/DOCS/Windows+Service" target="_blank">כשירות</a> שרץ ברקע, אך נוכל לעשות את זה בשלב מאוחר יותר.</p>
<p>כעת בכדי להריץ את שורת הפקודות לניהול המסד יש ללחוץ על mongo.exe או להריץ את הקובץ משורת הפקודות בדומה לקובץ שהרצנו בקוד למעלה. כברירת מחדל mongo.exe מתחבר לשרת מסד נתונים הרץ על גבי localhost ומשתמש במסד נתונים בשם test, בכדי לראות אפשרויות נוספות יש להריץ את הקובץ mongo עם פרמטר העזרה help&#8211; . בצורה הזו: mongo &#8211;help</p>
<p>לאחר מכן תוכלו לבצע שאילתה פשוטה כדי לבדוק שמסד הנתונים אכן עובד.</p>
<pre class="brush: php">
C:\&gt; cd \my_mongo_dir\bin
C:\my_mongo_dir\bin&gt; mongo
&gt; // the mongo shell is a javascript shell connected to the db
&gt; 3+3
6
&gt; db
test
&gt; // the first write will create the db:
&gt; db.foo.insert( { a : 1 } )
&gt; db.foo.find()
{ _id : ..., a : 1 }
</pre>
<p>זה הכל, כעת מסד הנתונים מותקן ועובד והרגע בצעתם שאלתה בעזרת MongoDB.</p>
<h2>התקנת MongoDB על גבי לינוקס &#8211; Linux &#8211; או מערכות מבוססות Unix אחרות.</h2>
<h3>ניהול חבילות</h3>
<p>משתמשי Ubuntu ו Debian יכולים להתקין את החבילה המתאימה בעזרת apt. קראו <a href="http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages" target="_blank">חבילות Ubuntu ו Debian</a> למידע נוסף.</p>
<p>משתמשי CentOS ו Fedora יכולים להתקין את החבילות מעמוד <a href="http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages" target="_blank">החבילות של CentOS ו Fedora</a>.</p>
<p>קבצים בינאריים ל-32ביט</p>
<p>הערה: <a href="http://blog.mongodb.org/post/137788967/32-bit-limitations" target="_blank">מומלץ להשתמש ב-64ביט.</a></p>
<pre class="brush: php">
$ curl http://downloads.mongodb.org/linux/mongodb-linux-i686-1.4.4.tgz &gt; mongo.tgz
$ tar xzf mongo.tgz
</pre>
<p>קבצים בינאריים ל-64ביט</p>
<pre class="brush: php">
$ curl http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.4.4.tgz &gt; mongo.tgz
$ tar xzf mongo.tgz
</pre>
<h3>יצירת תיקית המידע</h3>
<p>כברירת מחדל MongoDB יאחסן את הקבצים בנתיב data/db/ אך הוא אינו יוצר את התיקיה במידה והיא אינה קיימת. לכן כדי לוודא שהתיקיה קיימת במיקום המתאים כל מה שעליכם לעשות הוא להריץ את הפקודות הבאות בשורת הפקודות:</p>
<pre class="brush: php">
$ sudo mkdir -p /data/db/
$ sudo chown `id -u` /data/db
</pre>
<p>ניתן לשנות את המיקום בו המידע מאוחסן על ידי הפעלת השרת עם הפרמטר dbpath&#8211;</p>
<h3>הפעלת והרצת השרת</h3>
<p>ראשית, הפעילו את שרת MongoDB בטרמינל נפרד:</p>
<pre class="brush: php">
$ ./mongodb-xxxxxxx/bin/mongod
</pre>
<p>לאחר מכן הפעילו את קובץ ניהול השרת בטרמינל נוסף:</p>
<pre class="brush: php">
$ ./mongodb-xxxxxxx/bin/mongo
&gt; db.foo.save( { a : 1 } )
&gt; db.foo.find()
</pre>
<p>זה הכל.</p>
<h2>התקנת MongoDB על גבי os x.</h2>
<h3>התקנה</h3>
<p>הדרך הקלה והמהירה ביותר להתקנה היא להשתמש בחבילות מוכנות מראש או במנהל חבילות כלשהו:</p>
<p>לאלו שמשתמשים ב- <a href="http://mxcl.github.com/homebrew/">Homebrew</a> כדי להתקין את החבילות יש להריץ:</p>
<pre class="brush: php">
$ brew install mongodb
</pre>
<p>לאלו שמשתמשים ב &#8211; <a href="http://www.macports.org/">MacPorts</a> כדי להתקין את החבילות תוכלו להריץ:</p>
<pre class="brush: php">
$ sudo port install mongodb
</pre>
<p>ההתקנה יכולה לקחת קצת זמן.</p>
<p>קבצים בינאריים ל-32ביט</p>
<p>הערה: <a href="http://blog.mongodb.org/post/137788967/32-bit-limitations" target="_blank">מומלץ להשתמש ב-64ביט.</a></p>
<pre class="brush: php">
$ curl http://downloads.mongodb.org/osx/mongodb-osx-i386-1.4.4.tgz &gt; mongo.tgz
$ tar xzf mongo.tgz
</pre>
<p>קבצים בינאריים ל-64ביט</p>
<pre class="brush: php">
$ curl http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.4.4.tgz &gt; mongo.tgz
$ tar xzf mongo.tgz
</pre>
<h3>יצירת תיקית המידע</h3>
<p>כברירת מחדל MongoDB יאחסן את הקבצים בנתיב data/db/ אך הוא אינו יוצר את התיקיה במידה והיא אינה קיימת. לכן כדי לוודא שהתיקיה קיימת במיקום המתאים כל מה שעליכם לעשות הוא להריץ את הפקודות הבאות בשורת הפקודות:</p>
<pre class="brush: php">
$ mkdir -p /data/db
</pre>
<p>ניתן לשנות את המיקום בו המידע מאוחסן על ידי הפעלת השרת עם הפרמטר dbpath&#8211;</p>
<h3>הפעלת והרצת השרת</h3>
<p>ראשית, הפעילו את שרת MongoDB בטרמינל נפרד:</p>
<pre class="brush: php">
$ ./mongodb-xxxxxxx/bin/mongod
</pre>
<p>לאחר מכן הפעילו את קובץ ניהול השרת בטרמינל נוסף:</p>
<pre class="brush: php">
$ ./mongodb-xxxxxxx/bin/mongo
&gt; db.foo.save( { a : 1 } )
&gt; db.foo.find()
</pre>
<p>זה הכל.</p>
<h2>סיכום</h2>
<p>ניתן גם להתקין בצורה ידנית אך אלו הם הדרכים הקלות והמומלצות להתקנת MongoDB על השרת הביתי/שיתופי/פרטי.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 2 &#8211; התקנת התוסף עבור PHP</a> &#8211; 09/28/2010</li>
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-3-%d7%94%d7%aa%d7%97%d7%91%d7%a8%d7%95%d7%aa-%d7%9c%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%a8%d7%a6%d7%aa-%d7%a9%d7%90%d7%99%d7%9c%d7%aa%d7%95/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 3 &#8211; התחברות למסד נתונים הרצת שאילתות על גבי מסד הנתונים</a> &#8211; 09/28/2010</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2009/02/19/%d7%91%d7%93%d7%99%d7%a7%d7%aa-%d7%96%d7%9e%d7%9f-%d7%98%d7%a2%d7%99%d7%a0%d7%94-%d7%91-php/" rel="bookmark" title="02/19/2009">בדיקת זמן טעינה ב PHP</a> &#8211; 02/19/2009</li>
<li><a href="http://vadimg.com/2009/08/06/custom-test-center/" rel="bookmark" title="08/06/2009">Custom Test Center</a> &#8211; 08/06/2009</li>
</ul>
<p><!-- Similar Posts took 7.806 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/10/09/mongodb-%d7%97%d7%9c%d7%a7-1-%d7%94%d7%aa%d7%a7%d7%a0%d7%94/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB &#8211; חלק 3 &#8211; התחברות למסד נתונים הרצת שאילתות על גבי מסד הנתונים</title>
		<link>http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-3-%d7%94%d7%aa%d7%97%d7%91%d7%a8%d7%95%d7%aa-%d7%9c%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%a8%d7%a6%d7%aa-%d7%a9%d7%90%d7%99%d7%9c%d7%aa%d7%95/</link>
		<comments>http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-3-%d7%94%d7%aa%d7%97%d7%91%d7%a8%d7%95%d7%aa-%d7%9c%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%a8%d7%a6%d7%aa-%d7%a9%d7%90%d7%99%d7%9c%d7%aa%d7%95/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 10:11:51 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[install mongo]]></category>
		<category><![CDATA[install mongodb]]></category>
		<category><![CDATA[mongod]]></category>
		<category><![CDATA[windows mongo]]></category>
		<category><![CDATA[windows mongodb]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=669</guid>
		<description><![CDATA[בשלב זה יש לוודא שהחלק הראשון והשני בוצעו כהלכה ושרת ה MongoDB פעיל ורץ, בנוסף לתוסף ה PHP שהותקן ונבדק כפעיל גם הוא. כעת כל מה שנותר לעשות הוא בעצם להתחיל לעבוד עם השרת החדש, ומסד הנתונים החדש. הקדמה לאלו שלא מכירים מסדי נתונים המבוססים על אובייקטים, המונחים קצת שונים, לכן בכדי לפשט את הקריאה [...]]]></description>
			<content:encoded><![CDATA[<p>בשלב זה יש לוודא שהחלק הראשון והשני בוצעו כהלכה ושרת ה MongoDB פעיל ורץ, בנוסף לתוסף ה PHP שהותקן ונבדק כפעיל גם הוא. כעת כל מה שנותר לעשות הוא בעצם להתחיל לעבוד עם השרת החדש, ומסד הנתונים החדש.</p>
<p><span id="more-669"></span></p>
<h2>הקדמה</h2>
<p>לאלו שלא מכירים מסדי נתונים המבוססים על אובייקטים, המונחים קצת שונים, לכן בכדי לפשט את הקריאה אנו נציג רשימה של מונחים ואיך הם נקראים בעת השימוש ב MongoDB או במסדי נתונים המבוססים על אובייקטים.</p>
<ul>
<li>מסד נתונים
<ul>
<li>ב MYSQL זה נקרא מסד נתונים &#8211; Database</li>
<li>ב MongoDB זה נקרא מסד נתונים &#8211; Database</li>
</ul>
</li>
<li>טבלה
<ul>
<li>ב MYSQL זה נקרא טבלה &#8211; Table</li>
<li>ב MongoDB זה נקרא אוסף &#8211; Collection</li>
</ul>
</li>
<li>שורה
<ul>
<li>ב MYSQL  זה נקרא שורה &#8211; Row</li>
<li>ב MongoDB זה נקרא מסמך &#8211; Document</li>
</ul>
</li>
</ul>
<p>לאלו שלא הבינו עדיין, שורה הינה מסמך אשר משקף אוסף נתונים, שורות נמצאות בתוך אוסף (Collection) בזמן שאוסף נמצא בתוך מסד נתונים. בדומה ל MYSQL ששורה נמצאת בתוך טבלה וטבלה/טבלאות נמצאות בתוך מסד נתונים.</p>
<h2>יצירת והתחברות למסד נתונים</h2>
<h3>התחברות למסד נתונים</h3>
<p>בכדי להתחבר למסד נתונים בשרת המקומי על הפורט של MongoDB ברירת המחדל 27017 כל מה שצריך לעשות הוא להריץ פקודה כזו:</p>
<pre class="brush: php">
&lt;?php
$connection = new Mongo(); // connects to localhost:27017
?&gt;
</pre>
<p>בכדי להתחבר למסד נתונים בשרת מרוחק על אותו פורט ברירת המחדל ניתן לבצע זאת כך:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$connection = new Mongo( &quot;example.com&quot; ); // connect to a remote host (default port 27017)
?&gt;
</pre>
<p>בכדי להתחבר למסד נתונים בשרת מרוחק על פורט שונה מברירת המחדל ניתן לעשות זאת כך:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$connection = new Mongo( &quot;example.com:65432&quot; ); // connect to a remote host at a given port
?&gt;
</pre>
<p>כעת ניתן להשתמש ב connection$ כדי לקבל מסד נתונים.</p>
<h3>קבלה ושימוש במסד נתונים</h3>
<p>‪
<pre class="brush: php">‬
&lt;?php
‪$db = $connection-&gt;dbname;‬
?&gt;
‪</pre>
<p>‬</p>
<p>בכדי להשתמש במסד נתונים כלשהו, אין צורך בליצור אותו קודם. MongoDB מספיק חכם כדי לבדוק אם הוא קיים כבר, במידה ולא אז ליצור אותו באופן מיידי. ניתן ליצור מסדי נתונים חדשים על ידי בחירתם בלבד. יש לשים לב לשגיאות כתיב אם ניסיתם פעם אחת להתחבר למסד נתונים &#8220;name&#8221; ואז בפעם השנייה בטעות רשמתם &#8220;nme&#8221; יהיו לכם שני מסדי נתונים שונים. MongoDB לא יכול לתקן שגיאות כתיב, לכן יש לשים לב לנושא הזה.</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$db = $connection-&gt;name;
// do some stuff
$db = $connection-&gt;nme;
// now connected to a different database!
?&gt;
</pre>
<h2>יצירה ושימוש באוסף (Collection)</h2>
<h3>קבלה ושימוש באוסף</h3>
<p>פקודת קבלת האוסף זהה לפקודת קבלת מסד הנתונים.</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$db = $connection-&gt;baz;
$collection = $db-&gt;foobar;

// or, more succinctly
$collection = $connection-&gt;baz-&gt;foobar;
?&gt;
</pre>
<p>גם כאן במידה והאוסף לא קיים באותו מסד נתונים, MongoDB יצור אותו אוטומטית.</p>
<h2>יצירת מסמך (Document)</h2>
<p>ניתן לשמור מערך אסוציאטיבי כנתונים במסמך בתוך אוסף, מסמך אקראי יכול להראות כך:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$doc = array(
   &quot;name&quot; =&gt; &quot;MongoDB&quot;,
   &quot;type&quot; =&gt; &quot;database&quot;,
   &quot;count&quot; =&gt; 1,
   &quot;info&quot; =&gt; array(
          &#039;key&#039; =&gt; &#039;value&#039;,
          &#039;key2&#039; =&gt; &#039;value2&#039;,
    ),
   &quot;versions&quot; =&gt; array(&quot;0.9.7&quot;, &quot;0.9.8&quot;, &quot;0.9.9&quot;)
);
?&gt;
</pre>
<p>בכדי להוסיף מסמך אל אוסף ניתן להשתמש ב <a href="http://www.php.net/manual/en/mongocollection.insert.php">MongoCollection::insert</a>, לדוגמא:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$m = new Mongo();
$collection = $m-&gt;foo-&gt;bar;
$collection-&gt;insert( $doc );
?&gt;
</pre>
<h2>מציאת מסמכים בעזרת FindOne</h2>
<p>בכדי למצוא מסמך כלשהו (אובייקט) יש להשתמש במתודה <a href="http://www.php.net/manual/en/mongocollection.findone.php" target="_blank">MongoCollection::findOne</a> .</p>
<p>בכדי לבדוק אם המסמך מהחלק למעלה נוסף בהצלחה, אנו יכולים לבצע פעולת ()findOne פשוטה כדי לקבל את המסמך הראשון באוסף. מתודה זו מחזירה אובייקט אחד בלבד, בניגוד למתודה ()find אשר מחזירה אובייקט של MongoCursor שצריך לרוץ עליו. זה שימושי למקרים בהם ישנו רק מסמך אחד באוסף או שהנכם רוצים לקבל מסמך אחד בלבד.</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
‪$obj = $collection-&gt;findOne();‬
‪var_dump( $obj );‬
?&gt;
‪</pre>
<p>‬</p>
<p>זה אמור להדפיס את המערך הבא:</p>
<p>‪
<pre class="brush: php">‬
array(5) {
  [&quot;_id&quot;]=&gt;
  object(MongoId)#6 (0) {
  }
  [&quot;name&quot;]
  string(7) &quot;MongoDB&quot;
  [&quot;type&quot;]=&gt;
  string(8) &quot;database&quot;
  [&quot;count&quot;]=&gt;
  int(1)
  [&quot;info&quot;]=&gt;
  array (2) {
    [&quot;key&quot;]=&gt;
    string(5) &quot;value&quot;
    [&quot;key2&quot;]=&gt;
    string(6) &quot;value2&quot;
  }
  [&quot;versions&quot;]
  array(3) {
    [0]=&gt;
    string(5) &quot;0.9.7&quot;
    [1]=&gt;
    string(5) &quot;0.9.8&quot;
    [2]=&gt;
    string(5) &quot;0.9.9&quot;
  }
}
</pre>
<p>שימו לב שהאלמנט id_ נוסף אוטומטית למסמך, MongoDB לא מאפשר להוסיף אלמנטים עם שמות המתחילים ב _ או $, מאחר והוא משתמש בהם לשימוש פנימי.</p>
<h2>הוספת מספר מסמכים בבת אחת</h2>
<p>בכדי להוסיף מספר מסמכים בבת אחת, נוסיף אל אותו האוסף כמה מסמכים אשר מכילים בסך הכל את המערך הבא:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
array( &quot;i&quot; =&gt; value );
?&gt;
</pre>
<p>בכדי לקצר תהליכים נשתמש בלולאה כדי להוסיף את המסמכים לאוסף:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
for($i=0; $i&lt;100; $i++) {
    $collection-&gt;insert( array( &quot;i&quot; =&gt; $i ) );
}
?&gt;
</pre>
<p>שימו לב שאנו יכולים להוסיף מערכים עם שמות מפתחות שונים מאלו שכבר נמצאים שם או אלו שהוספנו קודם לכן, זה רק מעיד ש MongoDB הוא אינו משתמש בתרשים כלשהו.</p>
<h2>ספירת כמות המסמכים באוסף</h2>
<p>כעת שהוספנו 101 מסמכים לאוסף, 100 בעזרת הלולאה ואחד שהוספנו קודם לכן בנפרד. אנו יכולים לבדוק אם הם קיימים בעזרת המתודה ()count.</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
echo $collection-&gt;count();
?&gt;
</pre>
<p>זה אמור להדפיס 101.</p>
<p><a href="http://www.php.net/manual/en/mongocollection.count.php">MongoCollection::count</a> יכולים לקבל פרמטרים כדי לסנן נתונים מהתוצאה הסופית, כמו כן ניתן לבצע <a href="http://www.php.net/manual/en/mongocollection.count.php">MongoCollection::count</a> על גבי <a href="http://www.php.net/manual/en/class.mongocursor.php" target="_blank">MongoCursor</a> אשר יקח בחשבון את כל הפילטרים שהוספתם למתודה.</p>
<h2>שימוש בסמן כדי לקבל את כל המסמכים</h2>
<p>בכדי לקבל את כל המסמכים הנמצאים באוסף, אנו נשתמש במתודה <a href="http://www.php.net/manual/en/mongocollection.find.php">MongoCollection::find</a>. המתודה ()find מחזירה אובייקט של <a href="http://www.php.net/manual/en/class.mongocursor.php">MongoCursor</a> אשר ניתן לבצע עליו לולאה כדי לקבל את כל המסמכים שהתאימו לשאילתה שלנו. אז כדי לבצע שאילתה ולקבל את כל המסמכים באוסף:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$cursor = $collection-&gt;find();
foreach ($cursor as $id =&gt; $value) {
    echo &quot;$id: &quot;;
    var_dump( $value );
}
?&gt;
</pre>
<p>זה אמור להדפיס את כל 101 המסמכים באוסף, id$ הינו השדה id_ במסמך, וה value$ הינו המסמך עצמו.</p>
<h2>הגדרת קריטריון לשאילתה</h2>
<p>אנו יכולים להגדיר קרטריון ולהעביר אותו למתודה ()find כדי לקבל רק את המסמכים אשר תואמים לאותו קריטריון. לדוגמא אם היינו רוצים לקבל מסמך/מסמכים אשר הערך i שלהם שווה ל 71 אנו נעשה את הפעולה הבאה:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$query = array( &quot;i&quot; =&gt; 71 );
$cursor = $collection-&gt;find( $query );

while( $cursor-&gt;hasNext() ) {
    var_dump( $cursor-&gt;getNext() );
}
?&gt;
</pre>
<p>וזה אמור להדפיס:</p>
<p>‪
<pre class="brush: php">‬
array(2) {
  [&quot;_id&quot;]=&gt;
  object(MongoId)#6 (0) {
  }
  [&quot;i&quot;]=&gt;
  int(71)
  [&quot;_ns&quot;]=&gt;
  &quot;testCollection&quot;
}
</pre>
<h2>קבלת סט של מסמכים על פי קריטריון</h2>
<p>אנו יכולים להשתמש בקריטריון בשאילתה בכדי לקבל סט של מסמכים מהאוסף. לדוגמא, כדי לקבל את כל המסמכים אשר הערך i שלהם גדול מ 50 זאת אומרת i &gt; 50 נוכל לבצע זאת כך:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
‪$query = array( &quot;i&quot; =&gt; array( &#039;$gt&#039; =&gt; 50 ) ); //note the single quotes around &#039;$gt&#039;‬
‪$cursor = $coll-&gt;find( $query );‬

‪while( $cursor-&gt;hasNext() ) {‬
‪    var_dump( $cursor-&gt;getNext() );‬
‪}‬
?&gt;
‪</pre>
<p>‬</p>
<p>זה אמור להדפיס את כל המסמכים אשר i גדול מ 50, אנו יכולים גם להגדיר טווח לדוגמא i גדול מ-20 אבל קטן או שווה ל-30:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$query = array( &quot;i&quot; =&gt; array( &quot;\$gt&quot; =&gt; 20, &quot;\$lte&quot; =&gt; 30 ) );
$cursor = $coll-&gt;find( $query );

while( $cursor-&gt;hasNext() ) {
    var_dump( $cursor-&gt;getNext() );
}
?&gt;
</pre>
<p>לעיתים שוכחים להבריח את התו &#8220;$&#8221;, לכן ניתן לבחור את התו המיוחד שלהם שלא חוזר על עצמו בתוך שמות המפתחות במערך. לדוגמא &#8220;:&#8221; ולהוסיף את השורה הבאה לקובץ php.ini.</p>
<p>‪
<pre class="brush: php">‬
mongo.cmd = &quot;:&quot;
</pre>
<p> ואז הדוגמא למעלה תראה כך:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$query = array( &quot;i&quot; =&gt; array( &quot;:gt&quot; =&gt; 20, &quot;:lte&quot; =&gt; 30 ) );
?&gt;
</pre>
<p>כמו כן ניתן לשנות את זה באופן ידני במהלך הקוד בעזרת:</p>
<p>‪
<pre class="brush: php">‬
 ini_set(&quot;mongo.cmd&quot;, &quot;:&quot;).
</pre>
<p>או שכמובן ניתן פשוט להשתמש במרכאות בודדות בעת השימוש ב &#8220;$&#8221;.</p>
<h2>יצירת אינדקס</h2>
<p>MongoDB תומך באפשרות של אינדקסים, וניתן להוסיף אותם לאוסף בצורה מאוד פשוטה. בכדי ליצור אינדקס, כל מה שיש לעשות הוא להגדיר את השדה שאותו אנו רוצים לאנדקס, ולהגדיר אם אנו רוצים שהאינדקס יהיה בסדר עולה (1) או יורד (1-). הקוד הבא יוצר אינדקס בסדר עולה על השדה &#8220;i&#8221;:</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
$coll-&gt;ensureIndex( array( &quot;i&quot; =&gt; 1 ) );  // create index on &quot;i&quot;
$coll-&gt;ensureIndex( array( &quot;i&quot; =&gt; -1, &quot;j&quot; =&gt; 1 ) );  // index on &quot;i&quot; descending, &quot;j&quot; ascending
?&gt;
</pre>
<h2>דוגמא מהירה</h2>
<p>דוגמא זו, מתחברת למסד נתונים, מוסיפה אובייקטים, מבצעת שאילתות אחר אובייקטים, רצה על גבי התוצאות, ומתנתקת ממסד הנתונים.</p>
<p>‪
<pre class="brush: php">‬
&lt;?php
// connect
$m = new Mongo();

// select a database
$db = $m-&gt;comedy;
$collection = $db-&gt;cartoons;

// add an element
$obj = array( &quot;title&quot; =&gt; &quot;Calvin and Hobbes&quot;, &quot;author&quot; =&gt; &quot;Bill Watterson&quot; );
$collection-&gt;insert($obj);

// add another element, with a different &quot;shape&quot;
$obj = array( &quot;title&quot; =&gt; &quot;XKCD&quot;, &quot;online&quot; =&gt; true );
$collection-&gt;insert($obj);

// find everything in the collection
$cursor = $collection-&gt;find();

// iterate through the results
foreach ($cursor as $obj) {
    echo $obj[&quot;title&quot;] . &quot;\n&quot;;
}

// disconnect
$m-&gt;close();
?&gt;
</pre>
<p>זה אמור להדפיס:</p>
<p>‪
<pre class="brush: php">‬
Calvin and Hobbes
XKCD
</pre>
<h2>סיכום</h2>
<p>זוהי רק הדגמה למה שניתן לבצע עם MongoDB לאחר קבלת הידע הבסיסי רצוי לעיין בדוקומנטציה המלאה של MongoDB כדי לקבל מושג על כל האפשרויות שניתן לבצע על גבי מסד נתונים מסוג זה.</p>
<p>למרות שהוא דורש קצת יותר עבודה בכדי להתחיל לעבוד אתו, ברגע שהתחלתם הוא למעשה מפשט ומזרז את העניינים בצורה משמעותית. לאלו שרוצים לפשט את העניינים אף יותר, ישנו כלי בשם <a href="http://github.com/MongoDB-Rox/phpMoAdmin-MongoDB-Admin-Tool-for-PHP/blob/master/moadmin.php" target="_blank">MoAdmin</a> שבעצם מבצע את אותם הפעולות כמו PHPMYADMIN עבור MySQL. לאלו שלא מכירים את PHPMYADMIN אלו הם כלים לניהול מסד הנתונים דרך הדפדפן, במקום לבצע פעולות מסויימות דרך שורת הפקודות או הקוד אפשר לבצע אותם ישירות דרך הדפדפן.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/10/09/mongodb-%d7%97%d7%9c%d7%a7-1-%d7%94%d7%aa%d7%a7%d7%a0%d7%94/" rel="bookmark" title="10/09/2010">MongoDB &#8211; חלק 1 &#8211; התקנה</a> &#8211; 10/09/2010</li>
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 2 &#8211; התקנת התוסף עבור PHP</a> &#8211; 09/28/2010</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2010/09/16/%d7%a1%d7%a4%d7%a8%d7%99%d7%9d-%d7%9e%d7%95%d7%9e%d7%9c%d7%a6%d7%99%d7%9d-%d7%9c%d7%9c%d7%99%d7%9e%d7%95%d7%93-php-%d7%9c%d7%9e%d7%aa%d7%97%d7%99%d7%9c%d7%99%d7%9d-%d7%95%d7%90%d7%9c%d7%95-%d7%a9/" rel="bookmark" title="09/16/2010">ספרים מומלצים ללימוד PHP &#8211; למתחילים ואלו שרוצים להשתפר</a> &#8211; 09/16/2010</li>
</ul>
<p><!-- Similar Posts took 6.846 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-3-%d7%94%d7%aa%d7%97%d7%91%d7%a8%d7%95%d7%aa-%d7%9c%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%a8%d7%a6%d7%aa-%d7%a9%d7%90%d7%99%d7%9c%d7%aa%d7%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB &#8211; חלק 2 &#8211; התקנת התוסף עבור PHP</title>
		<link>http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/</link>
		<comments>http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 10:11:00 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[install mongo]]></category>
		<category><![CDATA[install mongodb]]></category>
		<category><![CDATA[mongod]]></category>
		<category><![CDATA[windows mongo]]></category>
		<category><![CDATA[windows mongodb]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=668</guid>
		<description><![CDATA[לאחר התקנת שרת ה MongoDB על השרת הביתי יש צורך בלהתקין את התוסף עבור PHP כדי להריץ פקודות לשרת בעזרת PHP. בכדי להתקין את התוסף תוכלו להשתמש באחת מהדרכים הבאות בהתאם למערכת ההפעלה בה רץ שרת ה MongoDB.‬ ‪ שימוש ב MongoDB ב-PHP ‪בכדי לגשת אל MongoDB מ-PHP תצרכו שני דברים:‬ ‪ ‬ להריץ את [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: right;">לאחר התקנת שרת ה MongoDB על השרת הביתי יש צורך בלהתקין את התוסף עבור PHP כדי להריץ פקודות לשרת בעזרת PHP. בכדי להתקין את התוסף תוכלו להשתמש באחת מהדרכים הבאות בהתאם למערכת ההפעלה בה רץ שרת ה MongoDB.‬<br />
‪<span id="more-668"></span></p>
<h2 style="text-align: right;">שימוש ב MongoDB ב-PHP</h2>
<p style="text-align: right;">‪בכדי לגשת אל MongoDB מ-PHP תצרכו שני דברים:‬<br />
‪</p>
<ul style="text-align: right;">‬</p>
<li>להריץ את שרת ה MongoDB &#8211; בכדי לעשות זאת יש להריץ את קובץ ה mongod &#8211; יש לשים לב לשם הקובץ זהו קובץ mongod ולא mongo.</li>
<li>‪תוסף MongoDB עבור PHP מותקן בשרת‬.</li>
</ul>
<h2 style="text-align: right;"><strong>התקנה התוסף עבור מערכות NIX*</strong></h2>
<p style="text-align: right;">‬<br />
‪ניתן להריץ את הפקודה הבאה דרך שורת הפקודות בכדי להתקין את התוסף:‬</p>
<p style="text-align: right;">‪
<pre class="brush: php">‬
‪sudo pecl install mongo‬
‪</pre>
<p>‬</p>
<p style="text-align: right;">‪לאחר מכן יש להוסיף את השורה באה אל קובץ php.ini :‬</p>
<p style="text-align: right;">‪
<pre class="brush: php">‬
‪extension=mongo.so‬
‪</pre>
<p>‬</p>
<p style="text-align: right;">‪רצוי להוסיף את השורה למעלה באותו חלק בו נמצאים כל שאר השורות להוספת תוספים אחרים בקובץ. אך זה אמור לעבוד במידה והוספתם את השורה בכל מקום בקובץ.‬</p>
<p style="text-align: right;">‪יש להפעיל מחדש את השרת (Apache, Nginx וכדומה) כדי שהשינויים יכנסו לתוקף.‬</p>
<p style="text-align: right;">‪למידע נוסף אודות התקנות ספציפיות למערכות הפעלה יש לעיין <a href="http://www.php.net/manual/en/mongo.installation.php" target="_blank">בדוקומנטציה</a> באתר הרשמי.‬<br />
‪</p>
<h2 style="text-align: right;">התקנה התוסף עבור מערכות Windows</h2>
<p style="text-align: right;">‬<br />
‪ראשית יש להוריד את הקובץ המתאים בהתאם לסביבת העבודה <a href="http://github.com/mongodb/mongo-php-driver/downloads" target="_blank">מעמוד ההורדות.</a>‬<br />
‪</p>
<ul style="text-align: right;">‬<br />
‪</p>
<li>VC6 עבור Apache ו VC9 עבור IIS.</li>
<p>‪</p>
<li>Thread Safe הכוונה היא להרצת PHP כמודול של Apache (שזה בדרך כלל המקרה) Non-Thread Safe היא להרצת PHP כ CGI.</li>
</ul>
<p style="text-align: right;">
‪יש לחלץ את הקבצים מקובץ ה ZIP שהורד, ולהוסיף את הקובץ php_mongo.dll לתיקית התוספים של PHP בשרת המקומי, שבדרך כלל נמצאת בתוך תיקית ההתקנה של PHP בשם &#8220;ext&#8221; .‬</p>
<p style="text-align: right;">‪לאחר מכן יש להוסיף לקובץ php.ini את השורה הבאה:‬</p>
<p style="text-align: right;">‪
<pre class="brush: php">‬
‪extension=php_mongo.dll‬
‪</pre>
<p>‬</p>
<p style="text-align: right;">‪יש להפעיל מחדש את השרת (Apache, IIS וכדומה) כדי שהשינויים יכנסו לתוקף.‬</p>
<p style="text-align: right;">‪למידע נוסף יש לקרוא בחלק <a href="http://us3.php.net/manual/en/mongo.installation.php" target="_blank">אודות Windows</a>.‬<br />
‪</p>
<h2 style="text-align: right;">בדיקת האם התוסף הותקן</h2>
<p style="text-align: right;">‬<br />
‪לצורך הבדיקה יש ליצור קובץ PHP חדש ולהוסיף בתוכו את הקוד הבא ולהריצו בדפדפן:‬</p>
<p style="text-align: right;">‪
<pre class="brush: php">‬
&lt;‪?php phpinfo(); ?‬&gt;
‪</pre>
<p>‬</p>
<p style="text-align: right;">‪זה יציג את ההגדרות והתוספים המותקנים כרגע ב PHP יש לוודא ששרת ה MongoDB הופעל ולחפש אחר &#8220;mongo&#8221; בתוך חלון הדפדפן שבו הקובץ נטען יש לוודא שהסטטוס הוא &#8220;enabled&#8221; . בשלב זה במידה והכל נעשה כמו שצריך שרת ה-MongoDB והתוסף ל PHP צריכים להיות מותקנים ופעילים.</p>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/10/09/mongodb-%d7%97%d7%9c%d7%a7-1-%d7%94%d7%aa%d7%a7%d7%a0%d7%94/" rel="bookmark" title="10/09/2010">MongoDB &#8211; חלק 1 &#8211; התקנה</a> &#8211; 10/09/2010</li>
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-3-%d7%94%d7%aa%d7%97%d7%91%d7%a8%d7%95%d7%aa-%d7%9c%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%a8%d7%a6%d7%aa-%d7%a9%d7%90%d7%99%d7%9c%d7%aa%d7%95/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 3 &#8211; התחברות למסד נתונים הרצת שאילתות על גבי מסד הנתונים</a> &#8211; 09/28/2010</li>
<li><a href="http://vadimg.com/2009/12/02/%d7%94%d7%aa%d7%a7%d7%a0%d7%94-%d7%95%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-xdebug/" rel="bookmark" title="12/02/2009">התקנה ושימוש ב XDEBUG</a> &#8211; 12/02/2009</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
</ul>
<p><!-- Similar Posts took 6.988 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ספרים מומלצים ללימוד PHP &#8211; למתחילים ואלו שרוצים להשתפר</title>
		<link>http://vadimg.com/2010/09/16/%d7%a1%d7%a4%d7%a8%d7%99%d7%9d-%d7%9e%d7%95%d7%9e%d7%9c%d7%a6%d7%99%d7%9d-%d7%9c%d7%9c%d7%99%d7%9e%d7%95%d7%93-php-%d7%9c%d7%9e%d7%aa%d7%97%d7%99%d7%9c%d7%99%d7%9d-%d7%95%d7%90%d7%9c%d7%95-%d7%a9/</link>
		<comments>http://vadimg.com/2010/09/16/%d7%a1%d7%a4%d7%a8%d7%99%d7%9d-%d7%9e%d7%95%d7%9e%d7%9c%d7%a6%d7%99%d7%9d-%d7%9c%d7%9c%d7%99%d7%9e%d7%95%d7%93-php-%d7%9c%d7%9e%d7%aa%d7%97%d7%99%d7%9c%d7%99%d7%9d-%d7%95%d7%90%d7%9c%d7%95-%d7%a9/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 05:54:51 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[bookse]]></category>
		<category><![CDATA[bookx]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=664</guid>
		<description><![CDATA[להלן רשימה של ספרים מומלצים (כאלו שקראתי או כאלו שלפי התקציר נראים כספרים שנכתבו בצורה ברורה). מתחילים Beginning PHP and MySQL: From Novice to Professional, Fourth Edition PHP for Absolute Beginners PHP &#38; MySQL For Dummies 3rd edition (For Dummies (Computer/Tech)) מתקדמים PHP Objects, Patterns and Practice, Third Edition (Expert&#8217;s Voice in Open Source) PHP [...]]]></description>
			<content:encoded><![CDATA[<p>להלן רשימה של ספרים מומלצים (כאלו שקראתי או כאלו שלפי התקציר נראים כספרים שנכתבו בצורה ברורה).</p>
<p><span id="more-664"></span></p>
<p><strong>מתחילים</strong></p>
<ol>
<li><a href="http://www.amazon.com/Beginning-PHP-MySQL-Novice-Professional/dp/1430231149/ref=sr_1_4?s=books&amp;ie=UTF8&amp;qid=1284616176&amp;sr=1-4">Beginning PHP and MySQL: From Novice to Professional, Fourth Edition</a></li>
<li><a href="http://www.amazon.com/PHP-Absolute-Beginners-Jason-Lengstorf/dp/1430224738/ref=sr_1_17?s=STORE&amp;ie=UTF8&amp;qid=1284616343&amp;sr=1-17">PHP for Absolute Beginners</a></li>
<li><a href="http://www.amazon.com/PHP-MySQL-Dummies-Computer-Tech/dp/0470096004/ref=sr_1_30?s=STORE&amp;ie=UTF8&amp;qid=1284616385&amp;sr=1-30">PHP &amp; MySQL For Dummies 3rd edition (For Dummies (Computer/Tech))</a></li>
</ol>
<p><strong>מתקדמים</strong></p>
<ol>
<li><a href="http://www.amazon.com/Objects-Patterns-Practice-Experts-Source/dp/143022925X/ref=sr_1_11?s=books&amp;ie=UTF8&amp;qid=1284616176&amp;sr=1-11">PHP Objects, Patterns and Practice, Third Edition (Expert&#8217;s Voice in Open Source)</a></li>
<li><a href="http://www.amazon.com/PHP-Object-Oriented-Solutions-David-Powers/dp/1430210117/ref=sr_1_12?s=books&amp;ie=UTF8&amp;qid=1284616176&amp;sr=1-12">PHP Object-Oriented Solutions</a></li>
<li><a href="http://www.amazon.com/PHP-Objects-Patterns-Practice-Second/dp/1590599098/ref=sr_1_14?s=books&amp;ie=UTF8&amp;qid=1284616331&amp;sr=1-14">PHP Objects, Patterns, and Practice, Second Edition</a></li>
<li><a href="http://www.amazon.com/Pro-PHP-Patterns-Frameworks-Testing/dp/1590598199/ref=sr_1_25?s=STORE&amp;ie=UTF8&amp;qid=1284616343&amp;sr=1-25">Pro PHP: Patterns, Frameworks, Testing and More</a></li>
</ol>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/02/11/php-design-patterns-%d7%94%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-singleton/" rel="bookmark" title="02/11/2009">PHP Design Patterns &#8211; השימוש ב Singleton</a> &#8211; 02/11/2009</li>
<li><a href="http://vadimg.com/2009/07/30/php-developer-job-position/" rel="bookmark" title="07/30/2009">PHP Developer job position</a> &#8211; 07/30/2009</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/" rel="bookmark" title="08/13/2009">PHP Job Position &#8211; Center Tel-Aviv, Israel</a> &#8211; 08/13/2009</li>
<li><a href="http://vadimg.com/2010/02/03/hiphop-for-php-move-fast/" rel="bookmark" title="02/03/2010">HipHop for PHP: Move Fast</a> &#8211; 02/03/2010</li>
</ul>
<p><!-- Similar Posts took 7.468 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/09/16/%d7%a1%d7%a4%d7%a8%d7%99%d7%9d-%d7%9e%d7%95%d7%9e%d7%9c%d7%a6%d7%99%d7%9d-%d7%9c%d7%9c%d7%99%d7%9e%d7%95%d7%93-php-%d7%9c%d7%9e%d7%aa%d7%97%d7%99%d7%9c%d7%99%d7%9d-%d7%95%d7%90%d7%9c%d7%95-%d7%a9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii 1.1.4 שוחררה</title>
		<link>http://vadimg.com/2010/09/06/yii-1-1-4-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/</link>
		<comments>http://vadimg.com/2010/09/06/yii-1-1-4-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 08:56:12 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php framework]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=662</guid>
		<description><![CDATA[בתאריך ה-5.9.10 שוחררה הגרסא האחרונה של Yii בגרסא 1.1.4. גרסא זו כוללת למעלה מ 60 תיקונים לבאגים שונים שנמצאו בגרסאות קודמות. בנוסף, נוספו מספר אפשרויות חדשות ועודכנו מספר אפשרויות שכבר קיימות באפליקציה.]]></description>
			<content:encoded><![CDATA[<div id="toprint">
<p>בתאריך ה-5.9.10 שוחררה הגרסא האחרונה של Yii בגרסא 1.1.4. גרסא זו  כוללת למעלה מ 60 תיקונים לבאגים שונים שנמצאו בגרסאות קודמות. בנוסף,  נוספו מספר אפשרויות חדשות ועודכנו מספר אפשרויות שכבר קיימות באפליקציה.</p>
<p><span id="more-662"></span></p>
<p>חלק מהאפשרויות החדשות הם:</p>
<ul>
<li>הוספה אוטומטית של פרמטרים מה GET_$ ישירות למתודת Action.</li>
<li>נוספו המחלקות CSqlDataProvider ו CArrayDataProvider.</li>
<li>נוספה האפשרות להוספת כללים לקישורים בזמן הרצת האפליקציה בעזרת CUrlManager::addRules.</li>
<li>גרסאת JQuery UI עודכנה לגרסא 1.8.4.</li>
<li>פקודות ()live של JQuery הוחלפו ב ()delegate בקוד ה JS שנוצר על ידי המערכת.</li>
</ul>
<p>לרשימת שינויים מלאה יש לצפות <a title="עמוד הבא" href="http://www.yiiframework.com/files/CHANGELOG-1.1.4.txt">בעמוד הבא</a>.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="03/14/2010">Yii גרסא 1.1.1 שוחררה!</a> &#8211; 03/14/2010</li>
<li><a href="http://vadimg.com/2010/07/07/yii-1-1-3-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="07/07/2010">Yii 1.1.3 שוחררה</a> &#8211; 07/07/2010</li>
<li><a href="http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/" rel="bookmark" title="12/27/2011">AtTheVip.com &#8211; New Yii Powered application</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2009/04/28/zend_payment-using-moneybookers-as-the-gateway/" rel="bookmark" title="04/28/2009">Zend_Payment &#8211; Using MoneyBookers as the Gateway</a> &#8211; 04/28/2009</li>
</ul>
<p><!-- Similar Posts took 7.783 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/09/06/yii-1-1-4-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN יצירה, שימוש ובעיות נפוצות</title>
		<link>http://vadimg.com/2010/08/20/svn-%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%95%d7%91%d7%a2%d7%99%d7%95%d7%aa-%d7%a0%d7%a4%d7%95%d7%a6%d7%95%d7%aa/</link>
		<comments>http://vadimg.com/2010/08/20/svn-%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%95%d7%91%d7%a2%d7%99%d7%95%d7%aa-%d7%a0%d7%a4%d7%95%d7%a6%d7%95%d7%aa/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 18:14:11 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[(x)html]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[אבטחת מידע]]></category>
		<category><![CDATA[אופטימיזציה]]></category>
		<category><![CDATA[אינטגרציה]]></category>
		<category><![CDATA[השוואות]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[לינוקס]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[subversion client]]></category>
		<category><![CDATA[svn checkout]]></category>
		<category><![CDATA[svn client]]></category>
		<category><![CDATA[svn create]]></category>
		<category><![CDATA[svn repository]]></category>
		<category><![CDATA[svn server]]></category>
		<category><![CDATA[בחינה]]></category>
		<category><![CDATA[מערכת]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=651</guid>
		<description><![CDATA[ראשית, נושא ה SVN הוא מאוד רחב, ולכן לא ניתן יהיה לכסותו בפוסט אחד בלבד. בפוסט זה אני אעבור בקצרה על מספר דברים בנוגע ל SVN.

בכתיבת מדריך זה אני עובד עם  MacBook Pro, ואני עובד מול Versions שהוא ה SVN CLIENT שלי. השרת הוא שרת מקומי ואני משתמש בשורת הפקודות כדי להריץ את הפקודות ההכרחיות (בשרת לא יהיה svn client לכן תצטרכו להריץ פקודות כדי ליצור repository).]]></description>
			<content:encoded><![CDATA[<p>ראשית, נושא ה SVN הוא מאוד רחב, ולכן לא ניתן יהיה לכסותו בפוסט אחד בלבד. בפוסט זה אני אעבור בקצרה על מספר דברים בנוגע ל SVN.</p>
<p>בכתיבת מדריך זה אני עובד עם  MacBook Pro, ואני עובד מול Versions שהוא ה SVN CLIENT שלי. השרת הוא שרת מקומי ואני משתמש בשורת הפקודות כדי להריץ את הפקודות ההכרחיות (בשרת לא יהיה svn client לכן תצטרכו להריץ פקודות כדי ליצור repository).</p>
<p><span id="more-651"></span></p>
<p>בתור התחלה אנו צריכים לבחור את סביבת העבודה, נניח ואנו רוצים ליצור את ה repository בשרת כלשהו, חשוב לדעת שכדי לבצע זאת יש צורך בגישה ל SSH שבדרך כלל החברות בארץ לא מספקות, גם לא בחול אלה אם כן אתם על שרת בנפרד ולא שרת שיתופי. אם אין לכם גישה ל  SSH אז לא תוכלו ליצור repository בשרת.</p>
<p>אנו נצע מנקודת הנחה שיש לכם גישת SSH לשרת, וגם התחברתם כ ROOT שמאפשר לכם את כל הגישות (למניעת בעיות של הרשאות במידה ויהיו).</p>
<p>שלב ראשון יהיה להתקין את ה subversion כדי שנוכל להריץ פקודות svn בשרת. כדי לבצע זאת יש להתחבר לשרת באמצעות ssh בצורה הבאה:</p>
<pre class="brush: php">
// Login to the server using ssh
ssh domain.com -l root
</pre>
<p>לאחר יהיה צורך בלהזין סיסמא, זוהי סיסמאת ה root אם התחברתם עם המשתמש root ברגע שהקשתם את הסיסמא הוא יציג לכם שהינכם מחוברים משהו דומה לזה:</p>
<pre class="brush: php">
Vadim-Gabriels-MacBook-Pro:~ vadimgabriel$ ssh domain.com -l root
rootxdoamin.com&#039;s password:
Linux ip-10-228-66-255 2.6.21.7-2.fc8xen-ec2-v1.0 #1 SMP Tue Sep 1 10:25:30 EDT 2009 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Amazon EC2 Debian 5.0.3 lenny AMI built by Eric Hammond
http://alestic.com  http://ec2debian-group.notlong.com

You have new mail.
Last login: Fri Aug 20 16:03:34 2010 from 79.180.47.102
ip-10-xxx-66-xxx:~#
</pre>
<p>כעת יש להתקין את ה subversion באמצעות הפקודה הבאה:</p>
<pre class="brush: php">

$ apt-get install subversion
</pre>
<p>ברגע זה הוא מתקין את הsubversion, אמור לקחת כמה שניות.</p>
<p>שלב שני יהיה כמובן ליצור את התיקיה בה אנו נאחסן את כל הפרוייקטים שלנו, בעצם את כל ה repositories שאנו נאחסן כדי לנהל את הקבצים שלנו. בדרך כלל התיקיה שאנו נאחסן את הקבצים תיהיה תיקיה סגורה ופרטית, כמו כן עדיף לא לשים אותה כמובן בתיקית השרת של Apache שמריץ קבצים, ככה שגם אם משהו נגש לקובץ ישירות דרך הדפדפן הוא יראה את התוכן שלו (אם יש לו הרשאות לגשת לתיקיה הוא יצטרך להזין שם משתמש וסיסמא) במקום להריץ אותו כקובץ (html , php תלוי בסוג הקובץ).</p>
<p>התיקיה שאני בדרך כלל מאחסן בה את הקבצים היא תחת</p>
<pre class="brush: php">

/home/svn/
</pre>
<p>אם היא עדיין לא קיימת אפשר ליצור אותה בצורה הבאה:</p>
<pre class="brush: php">

$ mkdir /home/svn
</pre>
<p>כעת יש ליצור את התיקיה בה אנו נאחסן את הפרוייקט שלנו, לצורך הדוגמא הזו אנו נשתמש בפרוייקט בשם test ולכן נצור תיקיה בשם test תחת home/svn/test/</p>
<pre class="brush: php">

$ mkdir /home/svn/test
</pre>
<p>כעת אנו נצור את ה repository תחת התיקיה test שיצרנו קודם לכן, אנו נשתמש ב svnadmin אשר מאפשר לנו לנהל את subversion שהתקנו קודם לכן. בעיקר השימוש בו נעשה כדי ליצור ולמחוק repositories בזמן ש svn x קיים כדי לבצע פעולות על גבי repository קיים (פרטים בהמשך).</p>
<p>אנו משתמשים בפונקציה שנקראת create אשר יוצרת repository תחת תיקיה מסויימת, חשוב לדעת שהתיקיה צריכה להיות ריקה, ואי אפשר להוסיף repository ל repository קיים.</p>
<pre class="brush: php">

$ svnadmin create /home/svn/test
</pre>
<p>כעת יצרנו את ה repository אך עדיין אי אפשר להשתמש בזה, מה שאנו צריכים לעשות הוא לתת הרשאות לתיקיה הזו כדי שיהיה ניתן לגשת אליה. אנו נעשה זאת בצורה הבאה:</p>
<pre class="brush: php">

$ chown -R www-data /home/svn/test
$ chmod -R g+rws /home/svn/test
</pre>
<p>כעת יש לתיקיה הרשאות מתאימות , אך אנו עדיין לא יכולים לגשת אליו, בישביל לאפשר גישה דרך הדפדפן או דרך כל client אחר צריך להגדיר קישור מסויים שיריץ את ה svn מהתיקיה. בישביל לעשות זאת אנו נעזר ב Apache עלינו לערוך את הקובץ:</p>
<pre class="brush: php">

$ nano /etc/apache2/mods-available/dav_svn.conf
</pre>
<p>* nano הינה פונקציה לעריכת קבצים ישירות בשורת הפקודות.</p>
<p>בעת פתיחת הקובץ אנו נראה המון טקסט, פשוט לרדת עם הסמן הכי למטה ולהוסיף את הקוד הבא:</p>
<pre class="brush: php">

&amp;amp;amp;amp;amp;lt;Location /svn/test&amp;amp;amp;amp;amp;gt;
DAV svn
SVNPath /home/svn/test
AuthType Basic
AuthName &amp;amp;quot;subversion repository&amp;amp;quot;
AuthUserFile /etc/subversion/passwd
Require valid-user
&amp;amp;amp;amp;amp;lt;/Location&amp;amp;amp;amp;amp;gt;
</pre>
<p>הקוד למעלה בעצם אומר לשרת Apache שברגע שנכנסים לקישור לנתיב http://domain.com/svn/test שבעצם יריץ את התוכן של הקבצים מהנתיב שמוגדר ב SVNPath.</p>
<p>ככה אנו יכולים ליצור עוד ועוד פרוייקטים וליצור לכל פרוייקט נתיב משלו, היתרון בזה שאנו יכולים להגביל משתמשים מסויימים לפרוייקטים מסויימים ולא לאפשר לכל משתמש לגשת לכל פרוייקט. כמובן שהקוד למעלה גם מגדיר קובץ שקורא את הסיסמאות שרק אותם משתמשים עם סיסמא יכולים לגשת לנתיב. השורה Require valid-user קובעת שאי אפשר לצפות בקבצים ללא הכנסה של שם משתמש וסיסמא תקינים, ואותו שם משתמש צריך להיות בקובץ etc/subversion/passwd/ כדי שיהיה אפשרות לגשת.</p>
<p>ברגע שיש לנו את הקוד בקובץ אנו צריכים לשמור אותו, בדרך כלל זה נעשה על ידי CTRL + X הוא ישאל אם לשמור את השינויים צריך לבחור ב Y ואז ללחוץ אנטר כדי לשמור על אותו השם. כרגע השינויים נשמרו אך שרת Apache לא מודע לכך, לכן אנו נאתחל אותו</p>
<pre class="brush: php">

$ /etc/init.d/apache2 restart
</pre>
<p>לבסוף יש ליצור שם משתמש וסיסמא שניתן יהיה לגשת לקבצים תחת התיקיה.</p>
<pre class="brush: php">

$ sudo htpasswd -c /etc/subversion/passwd user_name
</pre>
<p>כמובן שמבקום user_name יש לכתוב את שם המשתמש הרצוי, לאחר מכן הוא יבקש סיסמא פעמיים.</p>
<p>* לגבי ה c- יש להוסיף את זה בפעם הראשונה שאתם מריצים את הפקודה, זה בעצם אומר ליצור את הקובץ etc/subversion/passwd/ אחרי ההרצה הראשונה אין צורך בזה.</p>
<p>אם אתם לא בטוחים אילו שמות משתמשים ישנם תוכלו להריץ את הפקודה הבאה שתציג את התוכן של הקובץ של הסיסמאות:</p>
<pre class="brush: php">

$  cat /etc/subversion/passwd
</pre>
<p>כעת אפשר לגשת לקבצים ישירות דרך הדפדפן תחת http://domain.com/svn/test הוא כמובן יקפיץ הודעה לשם משתמש וסיסמא שאותם אתם צריכים להזין.</p>
<p>או דרך שורת הפקודות:</p>
<pre class="brush: php">

$ svn co http://domain.com/svn/test test --username user_name
</pre>
<p>* הפקודה svn co אומרת לבצע checkout של ה repository לתיקיה test בנתיב בו אנו נמצאים כרגע, לכן רצוי לעשות זאת תחת התקייה בה אתם עובדים כשרת.</p>
<p>כעת יצרתם repository ואתם יכולים לגשת אליה. כל מה שנותר לעשות זה לדעת מה בידיוק אפשר לעשות עם זה.</p>
<p>אז שיטת העבודה היא פשוטה, כל משתמש מבצע checkout לתיקיה בשרת הביתי שלו ב localhost ועובד כרגיל, בכל תיקיה תחת test שיצרנו קודם לכן יהיו תיקיות וקבצים מוסתרים כמו svn. שקיים בכל תיקיה. אותם קבצים לא מפריעים לפעילות העבודה וצריך להתעלם מהם.</p>
<p>כמה דברים חשובים בנוגע לקבצים אלו ולקבצים תחת הפרוייקט. אחד הדברים החשובים היא לעולם לא למחוק תיקיות אלו כל תיקיה svn. הינה תיקיה של ה svn שהוא צריך כדי לתפקד כמו שצריך, אם תמחקו אותה הוא יציג שגיאה שחסר לו מידע אודות התיקיה בה מחקתם את התיקיה הזו. לכן לא נוגעים בתיקיות אלו.</p>
<p>כל הקבצים והתיקיות תחת הפרוייקט הם מאונדקסים, השם, המיקום, וכן הלאה. לכן אסור למחוק או לשנות את שמם של תיקיות וקבצים תחת הפרוייקט. כל שינוי של שם או מחיקה של קובץ או תיקיה צריך להתבצע ישירות מה client שיש לכם מותקן במחשב. client טוב הינו http://tortoisesvn.tigris.org/</p>
<p>ברגע שתפתחו אותו תצטרכו להוסיף קישור שמכיל repository בתוכו, לאחר מכן הוא מאפשר לכם לקבוע לאן לבצע את ה checkout, כמובן שיש לבצע זאת לתיקיה בה אפשר להריץ את הקבצים כקבצים רגילים (זאת אומרת תחת התיקיה בה אתם מריצים את הסקריפטים שלכם).</p>
<p>כעת אתם יכולים לעבוד על הקבצים, ברגע שבצעתם שינוי בקבצים כלשהם אתם יכולים לעדכן את ה repository על ידי ביצוע commit פשוט סמנו את התיקיה הראשית ובחרו באפשרות של commit, הוא מציג את הקבצים שהשתנו ואת הקבצים החדשים במידה והוספתם ואתם מעוניינים להוסיף אותם גם כן ל repository, ומאפשר לכם להוסיף הערה, תמיד טוב לכתוב משהו כמו &#8220;added  x file, changed y file&#8221; כדי שיהיה מושג מה בידיוק השינוי שבוצע. בכל פעם שמבצעים commit מספר הגרסא של ה repository עולה, מספר זה נקרא revision שזה בעצם אומר גרסא, מה שטוב ב svn הוא שהוא שומר את כל הגרסאות אחורה, אם נעשה שינוי שלא טוב לכם עכשיו אתם יכולים לחזור אחורה לגרסא מסויימת, בנוסף לשלל אפשרויות נוספות כמו לצפות בשינויים שנעשו לכל קובץ לאחרונה, השוואה בין קובץ בגרסא הנוכחית לבין גרסאות קודמות וכן הלאה.</p>
<p>כעת שהנכם יודעים כיצד להוסיף את הדברים ל repository אתם רוצים גם לקבל את העדכונים הכי חדשים מה repository שמשתמשים אחרים עשו והוסיפו ל repository כדי לעשות זאת יש לבצע update ל repository שלכם במחשב אשר לוקח את השינויים מה repository בשרת ומעדכן את הקבצים והתיקיות בהתאם. לדוגמא הוא מוחק, משנה שמות ומעדכן תוכן הקבצים בידיוק כפי שהשינויים נעשו.</p>
<p>לכן זה כל כך חשוב לשנות שם ולמחוק קבצים ותיקיות ישירות דרך התוכנה ולא בעצמכם אחרת יהיו בעיות או כמו שה svn אוהב להציג אותם כ conflicts.</p>
<p>בהרבה מקרים שני משתמשים יעבדו על אותו הקובץ, ברגע שאחד מבצע commit ומעדכן את ה repository השני שעדיין לא בצע commit לא יוכל לבצע עד שלא יבצע update, אם הם עבדו על אותו הקובץ זה שיבצע update יקבל שגיאה בקובץ שהינה conflict, כדי לפתור אותה יש ללחוץ קליק ימני על הקובץ דרך תוכנת ה svn ולבחור ב edit conflicts הוא מציג מסך עם שני הגרסאות, מה שיש למשתמש כרגע במחשב ומה שיש ב repository בשרת, כעת הוא צריך לבחור קטעי קוד שצריך להשתמש בהם בקובץ הסופי שיאוחד, הוא יכול לבחור את הקובץ המלא שלו או החדש או לבחור קטעי קוד. בסיום יש ללחוץ על כפתור השמירה ואז על כפתור V שבעצם אומר resolve conflicts או resolved .</p>
<p>כעת הוא יכול לבצע commit לשינויים שלו הכוללים גם את השינויים שהוא קיבל מה repository שנעשו על ידי המשתמש השני. ככה הוא מאחד את שני הקבצים לאחד ושומר קובץ אחד עם כל השינויים של כולם. שוב זה יקרה רק במידה ושני משתמשים עבדו על אותו הקובץ ואחד עשה commit, בזמן שהשני עשה update .</p>
<p>לסיום, בסופו של דבר אנו רוצים להוציא את כל הקבצים ולעלות לשרת, מה שאני בדרך כלל עושה הוא פשוט עושה checkout בשרת ואז הכל עובד, ובעת הצורך אני מבצע update בשרת כדי לקבל את כל השינויים שעשיתי לוקאלית חוסך לי את הפעולה של ה export שאני יסביר.</p>
<p>** חשוב!! אם הינכם עובדים בשיטה של לבצע checkout בשרת לפרוייקטים ולעדכן בעת הצורך יש להוסיף פקודה ל Apache שלא יציג תוכן של קבצי svn. תחת הנתיב של קבצי השרת (בדרך כלל var/www/) כי אם משהו יגש לנתיב הבא לדוגמא http://domain.com/svn/test/.svn הוא יראה תוכן של ה svn ובחלק מהקבצים שמורים הסיסמאות של אותם משתמשים שנכנסו בעבר לפרוייקט. לדוגמא אם תנסו לגשת לכאן http://he.yiiframework.co.il/.svn/ הוא יציג שגיאה שלא ניתן.</p>
<p>Export או ייצוא מאפשר להוציא את כל הקבצים של הפרוייקט ללא כל התיקיות והקבצים של ה svn (אותם תיקיות svn. שהוזכרו קודם לכן). אם פשוט מעלים את כל התקיה כמו שהיא אז קודם כל המשקל שלה יהיה כפול בגלל כל תיקיות svn. ודבר שני הוא מה שכתבתי פסקה למעלה ב** .</p>
<p>אלו הם בעצם השימושים העיקריים והמרכזיים ב svn לעיתים הוא יכול להיות קצת מטרד אם הרבה עובדים על אותם הקבצים ונוצרים conflicts אבל ברוב המקרים הוא עושה עבודה טובה ומקל על עדכון הקבצים בין השרת הלוקאלי שבו מתבצעת העבודה השוטפת לבין השרת בו הקבצים רצים.</p>
<p>מקווה שזה עזר לכמה מכם שמעוניינים לעבוד בצורה שוטפת יותר.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
<li><a href="http://vadimg.com/2009/02/04/inspekt-%d7%9b%d7%aa%d7%99%d7%91%d7%aa-%d7%9e%d7%a2%d7%a8%d7%9b%d7%95%d7%aa-%d7%9e%d7%90%d7%95%d7%91%d7%98%d7%97%d7%95%d7%aa-%d7%99%d7%95%d7%aa%d7%a8-%d7%9e%d7%94/" rel="bookmark" title="02/04/2009">Inspekt  כתיבת מערכות מאובטחות יותר. מה?</a> &#8211; 02/04/2009</li>
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
</ul>
<p><!-- Similar Posts took 8.214 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/08/20/svn-%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%95%d7%91%d7%a2%d7%99%d7%95%d7%aa-%d7%a0%d7%a4%d7%95%d7%a6%d7%95%d7%aa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>הספר הראשון עבור Yii</title>
		<link>http://vadimg.com/2010/08/16/%d7%94%d7%a1%d7%a4%d7%a8-%d7%94%d7%a8%d7%90%d7%a9%d7%95%d7%9f-%d7%a2%d7%91%d7%95%d7%a8-yii/</link>
		<comments>http://vadimg.com/2010/08/16/%d7%94%d7%a1%d7%a4%d7%a8-%d7%94%d7%a8%d7%90%d7%a9%d7%95%d7%9f-%d7%a2%d7%91%d7%95%d7%a8-yii/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 05:03:21 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[yii book]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=649</guid>
		<description><![CDATA[לפני כמה ימים פורסם באתר הרשמי של Yii הספר הראשון שנכתב על ידי Jeffrey Winesett. הספר Agile Web Application Development with Yii1.1 and PHP5 שניתן לרכישה מדבר בעיקר על הדברים הבאים: מדריך ליצירת אפליקציות ווב מתקדמות שלב אחרי שלב. בניית אפליקצית ניהול משימות, שימוש במסד נתונים וניהול משתמשים במערכת ה Yii. בדיקת תקינות הקוד ושילוב [...]]]></description>
			<content:encoded><![CDATA[<div id="toprint">
<p>לפני כמה ימים פורסם באתר הרשמי של Yii הספר הראשון שנכתב על ידי <a title="Jeffrey Winesett" href="http://www.yiiframework.com/forum/index.php?showuser=15">Jeffrey Winesett</a>. הספר <a title="Agile Web Application Development with Yii1.1 and PHP5." href="http://www.amazon.com/dp/1847199585?tag=gii20f-20&amp;camp=0&amp;creative=0&amp;linkCode=as1&amp;creativeASIN=1847199585&amp;adid=0BHF2HS6FNS82M85KJQT">Agile Web Application Development with Yii1.1 and PHP5</a> שניתן לרכישה מדבר בעיקר על הדברים הבאים:</p>
<p><span id="more-649"></span></p>
<ul>
<li>מדריך ליצירת אפליקציות ווב מתקדמות שלב אחרי שלב.</li>
<li>בניית אפליקצית ניהול משימות, שימוש במסד נתונים וניהול משתמשים במערכת ה Yii.</li>
<li>בדיקת תקינות הקוד ושילוב טכניקת ה TDD במערכת ה Yii.</li>
<li>חסכון בכתיבת קוד על ידי שימוש בכלים ליצירת קוד הנמצאים במערכת  Yii.</li>
<li>שיפור האפליקציה על ידי הוספת פידים, שילוב של כמה שפות, והוספת מספר עיצובים.</li>
</ul>
<p><img title="הספר" src="http://www.yiiframework.com/images/yii-book.jpg" alt="http://www.yiiframework.com/images/yii-book.jpg" /></p>
<p>לפרטים נוספים יש לקרוא את הפרסום המקורי באתר <a title="http://www.yiiframework.com/" href="http://www.yiiframework.com/">http://www.yiiframework.com/</a>.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/" rel="bookmark" title="12/27/2011">AtTheVip.com &#8211; New Yii Powered application</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/" rel="bookmark" title="03/11/2010">אתר תמיכה ל YII בעברית &#8211; בקרוב!</a> &#8211; 03/11/2010</li>
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/" rel="bookmark" title="03/04/2010">תרגום של YII לעברית</a> &#8211; 03/04/2010</li>
<li><a href="http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/" rel="bookmark" title="03/21/2010">Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב</a> &#8211; 03/21/2010</li>
</ul>
<p><!-- Similar Posts took 7.296 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/08/16/%d7%94%d7%a1%d7%a4%d7%a8-%d7%94%d7%a8%d7%90%d7%a9%d7%95%d7%9f-%d7%a2%d7%91%d7%95%d7%a8-yii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii 1.1.3 שוחררה</title>
		<link>http://vadimg.com/2010/07/07/yii-1-1-3-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/</link>
		<comments>http://vadimg.com/2010/07/07/yii-1-1-3-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 08:21:06 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[1.1.3]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[yii 1.1.3]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=646</guid>
		<description><![CDATA[גרסא 1.1.3 של Yii שוחררה, גרסא זו מתקנת כמה באגים לא קריטיים בנוסף ישנם כמה אפשרויות חדשות. בין האפשרויות החדשות ניתן למצוא: נוסף וידג&#8217;ט חדש CJuiButton, אשר מאפשר להוסיף כפתור בעזרת JQuery UI. CAutoComplete לא קיים ולא ניתן להשתמש בו בגרסא זו והלאה. נוספו האירועים beforeLogin, afterLogin, beforeLogout ו afterLogout למחלקת CWebUser. נוספו האירועים beforeValidate, [...]]]></description>
			<content:encoded><![CDATA[<div id="toprint">
<p>גרסא 1.1.3 של Yii שוחררה, גרסא זו מתקנת כמה באגים לא קריטיים  בנוסף ישנם כמה אפשרויות חדשות.</p>
<p>בין האפשרויות החדשות ניתן למצוא:</p>
<ul>
<li>נוסף וידג&#8217;ט חדש CJuiButton, אשר מאפשר להוסיף כפתור בעזרת JQuery  UI.</li>
<li>CAutoComplete לא קיים ולא ניתן להשתמש בו בגרסא זו והלאה.</li>
<li>נוספו האירועים beforeLogin, afterLogin, beforeLogout ו afterLogout  למחלקת CWebUser.</li>
<li>נוספו האירועים beforeValidate, afterValidate,  beforeValidateAttribute ו afterValidateAttribute במחלקת ה &#8211; CActiveForm.</li>
</ul>
<p>בכדאי להוריד את הגרסא החדשה יש לעיין בעמוד הבא <a title="להורדה!" href="http://www.yiiframework.com/download/">להורדה!</a></p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/09/06/yii-1-1-4-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="09/06/2010">Yii 1.1.4 שוחררה</a> &#8211; 09/06/2010</li>
<li><a href="http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="03/14/2010">Yii גרסא 1.1.1 שוחררה!</a> &#8211; 03/14/2010</li>
<li><a href="http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/" rel="bookmark" title="07/13/2009">יצירת בלוג בעזרת Yii תוך 30 דקות בלבד &#8211; מדריך וידאו</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/" rel="bookmark" title="03/04/2010">תרגום של YII לעברית</a> &#8211; 03/04/2010</li>
<li><a href="http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/" rel="bookmark" title="03/11/2010">אתר תמיכה ל YII בעברית &#8211; בקרוב!</a> &#8211; 03/11/2010</li>
</ul>
<p><!-- Similar Posts took 7.455 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/07/07/yii-1-1-3-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>אתר התמיכה עבור Yiiframework עלה</title>
		<link>http://vadimg.com/2010/06/15/%d7%90%d7%aa%d7%a8-%d7%94%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%a2%d7%91%d7%95%d7%a8-yiiframework-%d7%a2%d7%9c%d7%94/</link>
		<comments>http://vadimg.com/2010/06/15/%d7%90%d7%aa%d7%a8-%d7%94%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%a2%d7%91%d7%95%d7%a8-yiiframework-%d7%a2%d7%9c%d7%94/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 06:38:06 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[hebrew yii]]></category>
		<category><![CDATA[php framework]]></category>
		<category><![CDATA[yiiframework]]></category>
		<category><![CDATA[yiiframework.co.il]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=644</guid>
		<description><![CDATA[לכל אלו שמעוניינים לפתח אפליקציות מתקדמות מוזמנים לבקר באתר Yiiframework.co.il כדי לקבל מידע, מדריכים, דוקומנטציה מלאה אודות השימוש במערכת, תוספים שונים ותמיכה. הכל נמצא שם וניתן בחינם. למידע נוסף Yiiframework.co.ilSimilar Posts Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב &#8211; 03/21/2010 Yiiframework CMS is now on Github &#8211; 04/03/2012 הספר הראשון עבור Yii [...]]]></description>
			<content:encoded><![CDATA[<p>לכל אלו שמעוניינים לפתח אפליקציות מתקדמות מוזמנים לבקר באתר <a href="http://he.yiiframework.co.il/" target="_blank">Yiiframework.co.il</a> כדי לקבל מידע, מדריכים, דוקומנטציה מלאה אודות השימוש במערכת, תוספים שונים ותמיכה. הכל נמצא שם וניתן בחינם.</p>
<p>למידע נוסף <a href="http://he.yiiframework.co.il/" target="_blank">Yiiframework.co.il</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/" rel="bookmark" title="03/21/2010">Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב</a> &#8211; 03/21/2010</li>
<li><a href="http://vadimg.com/2012/04/03/yiiframework-cms-is-now-on-github/" rel="bookmark" title="04/03/2012">Yiiframework CMS is now on Github</a> &#8211; 04/03/2012</li>
<li><a href="http://vadimg.com/2010/08/16/%d7%94%d7%a1%d7%a4%d7%a8-%d7%94%d7%a8%d7%90%d7%a9%d7%95%d7%9f-%d7%a2%d7%91%d7%95%d7%a8-yii/" rel="bookmark" title="08/16/2010">הספר הראשון עבור Yii</a> &#8211; 08/16/2010</li>
<li><a href="http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/" rel="bookmark" title="03/11/2010">אתר תמיכה ל YII בעברית &#8211; בקרוב!</a> &#8211; 03/11/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
</ul>
<p><!-- Similar Posts took 6.960 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/06/15/%d7%90%d7%aa%d7%a8-%d7%94%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%a2%d7%91%d7%95%d7%a8-yiiframework-%d7%a2%d7%9c%d7%94/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>דווח שגיאות וטעויות בטקסט באופן דינאמי ומהיר</title>
		<link>http://vadimg.com/2010/05/22/%d7%93%d7%95%d7%95%d7%97-%d7%a9%d7%92%d7%99%d7%90%d7%95%d7%aa-%d7%95%d7%98%d7%a2%d7%95%d7%99%d7%95%d7%aa-%d7%91%d7%98%d7%a7%d7%a1%d7%98-%d7%91%d7%90%d7%95%d7%a4%d7%9f-%d7%93%d7%99%d7%a0%d7%90%d7%9e/</link>
		<comments>http://vadimg.com/2010/05/22/%d7%93%d7%95%d7%95%d7%97-%d7%a9%d7%92%d7%99%d7%90%d7%95%d7%aa-%d7%95%d7%98%d7%a2%d7%95%d7%99%d7%95%d7%aa-%d7%91%d7%98%d7%a7%d7%a1%d7%98-%d7%91%d7%90%d7%95%d7%a4%d7%9f-%d7%93%d7%99%d7%a0%d7%90%d7%9e/#comments</comments>
		<pubDate>Sat, 22 May 2010 15:07:10 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[דווח]]></category>
		<category><![CDATA[דווח שגיאות]]></category>
		<category><![CDATA[שגיאות]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=639</guid>
		<description><![CDATA[פלאגין חדש שנכתב עבור JQuery מאפשר למשתמשים ולצופים באתר לדווח לגבי תוכן שלא מוצא חן בעיניהם, בעייתי, מכיל תכנים לא חוקיים, מכיל שגיאות כתיב, וכדומה. אין צורך בידע קודם, התקנה קלה ומהירה, שולח את הדיווחים לאימייל שאותו הנכם מגדירים ובעזרת המחולל האוטומטי אין צורך בהגדרת הפלאגין אלה רק להורידו. למידע נוסף InlineReport.comSimilar Posts InlineReport &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>פלאגין חדש שנכתב עבור JQuery מאפשר למשתמשים ולצופים באתר לדווח לגבי תוכן שלא מוצא חן בעיניהם, בעייתי, מכיל תכנים לא חוקיים, מכיל שגיאות כתיב, וכדומה.</p>
<p>אין צורך בידע קודם, התקנה קלה ומהירה, שולח את הדיווחים לאימייל שאותו הנכם מגדירים ובעזרת המחולל האוטומטי אין צורך בהגדרת הפלאגין אלה רק להורידו.</p>
<p><span id="more-639"></span></p>
<p>למידע נוסף <a href="http://inlinereport.com" target="_blank">InlineReport.com</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/05/22/inlinereport-report-content-inline/" rel="bookmark" title="05/22/2010">InlineReport &#8211; Report content inline</a> &#8211; 05/22/2010</li>
</ul>
<p><!-- Similar Posts took 3.026 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/05/22/%d7%93%d7%95%d7%95%d7%97-%d7%a9%d7%92%d7%99%d7%90%d7%95%d7%aa-%d7%95%d7%98%d7%a2%d7%95%d7%99%d7%95%d7%aa-%d7%91%d7%98%d7%a7%d7%a1%d7%98-%d7%91%d7%90%d7%95%d7%a4%d7%9f-%d7%93%d7%99%d7%a0%d7%90%d7%9e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InlineReport &#8211; Report content inline</title>
		<link>http://vadimg.com/2010/05/22/inlinereport-report-content-inline/</link>
		<comments>http://vadimg.com/2010/05/22/inlinereport-report-content-inline/#comments</comments>
		<pubDate>Sat, 22 May 2010 14:59:41 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[inline]]></category>
		<category><![CDATA[inline report]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery plugin]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[type]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=635</guid>
		<description><![CDATA[InlineReport is a small JQuery plugin written to allow website users and visitors to report content they see as a bug, Inappropriate, Spam, or event report typos they see in blog posts, Articles, Tutorials, News and any other content. Using InlineReport is Simple, Easy and efficient. All you need to do is to load the [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">InlineReport is a small JQuery plugin written to allow website users and visitors to report content they see as a bug, Inappropriate, Spam, or event report typos they see in blog posts, Articles, Tutorials, News and any other content.</p>
<p>Using InlineReport is Simple, Easy and efficient. All you need to do is to load the single required JS file onto the webpage, Insert one simple line to the document source code (To initialize the InlineReport) and your good to go.</p>
<p>Triggering the InlineReport can be modified with ease, With the default implementation you need to press the CTRL + Z to see the report modal box. Note that it will only trigger if there is a text selected (Meaning something on the page is selected).</p>
<p>The InlineReport is actually active in this website and you can go ahead and select a text and hit the combination keys mentioned above and you should see it in action.</p>
<p>InlineReport is optimized to work with all modern browsers including IE6+, FF2+, Safari 3+, Opera 9+, Chrome. Its appearance can be customized to fit your sites look and feel.</p>
<p>Translation is done with basic knowledge as well, Some languages are supported and you can download the plugin in your native language if its supported and listed under our supported languages section.</p>
<p>Check it out <a href="http://inlinereport.com" target="_blank">InlineReport.com</a></p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/05/22/%d7%93%d7%95%d7%95%d7%97-%d7%a9%d7%92%d7%99%d7%90%d7%95%d7%aa-%d7%95%d7%98%d7%a2%d7%95%d7%99%d7%95%d7%aa-%d7%91%d7%98%d7%a7%d7%a1%d7%98-%d7%91%d7%90%d7%95%d7%a4%d7%9f-%d7%93%d7%99%d7%a0%d7%90%d7%9e/" rel="bookmark" title="05/22/2010">דווח שגיאות וטעויות בטקסט באופן דינאמי ומהיר</a> &#8211; 05/22/2010</li>
<li><a href="http://vadimg.com/2009/07/30/mysql-data-types-quick-reference-table-mysql-version-5-0/" rel="bookmark" title="07/30/2009">MySQL Data Types Quick Reference Table: MySQL Version 5.0</a> &#8211; 07/30/2009</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/" rel="bookmark" title="12/02/2010">PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</a> &#8211; 12/02/2010</li>
</ul>
<p><!-- Similar Posts took 5.597 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/05/22/inlinereport-report-content-inline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</title>
		<link>http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/</link>
		<comments>http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/#comments</comments>
		<pubDate>Wed, 05 May 2010 10:46:16 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[facebook]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[אינטגרציה]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[facebook api]]></category>
		<category><![CDATA[facebook class]]></category>
		<category><![CDATA[facebook graph]]></category>
		<category><![CDATA[facebook graph api]]></category>
		<category><![CDATA[facebook php sdk]]></category>
		<category><![CDATA[facebook sdk]]></category>
		<category><![CDATA[facebook social plugins]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[php class]]></category>
		<category><![CDATA[php facebook class]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[social plugins]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=620</guid>
		<description><![CDATA[Facebook PHP Library Update: Version 3.0 of the Class was released that works with the new Facebook PHP API. Click Here To View It! Update: New version available 1.2a download link updated, Added a new example to search for an item on facebook and return it as an array/json The facebook PHP SDK offers extended [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<h1>Facebook PHP Library</h1>
<div style="text-decoration: underline; font-size:25px; color: red;"><strong>Update: Version 3.0 of the Class was released that works with the new Facebook PHP API. <a href='http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/'>Click Here To View It!</a></strong></div>
<p><span style="text-decoration: underline;"><strong>Update: New version available 1.2a download link updated, Added a new example to search for an item on facebook and return it as an array/json</strong></span></p>
<p>The facebook PHP SDK offers extended functionality to get, post and show content directly from and to facebook.<br />
The following class was created in order to simplify the development time and make the API even easier to use and manage.</p>
<p>Those are the examples on using this class that extends the facebook SDK class.</p>
<p><span id="more-620"></span></p>
<p>Note: Before using the library and the API you will need to either use a certification and an SSL domain to call the API methods over SSL protocol, Or use the following short tutorial on adding a certification manually to the API calls.</p>
<ol>
<li>Download: http://www.gknw.net/php/phpscripts/mk-ca-bundle.phps to c:\</li>
<li>Open cmd and run: c:>php mk-ca-bundle.php</li>
<li>Output should read: Downloading &#8216;certdata.txt&#8217; &#8230;Done (140 CA certs processed).</li>
<li>This file should be created: c:\ca-bundle.crt</li>
<li>Move c:\ca-bundle.crt to your preferred path</li>
<li>After initiating this library add the following line right below that:</li>
</ol>
<pre class="brush: php">
facebookLib::$CURL_OPTS[CURLOPT_CAINFO] = &#039;path\to\cert\ca-bundle.crt&#039;;
</pre>
<p>You&#8217;ll end up with something looking like this:</p>
<pre class="brush: php">
include_once &quot;facebookLib.php&quot;;
$facebook = new facebookLib($config);
facebookLib::$CURL_OPTS[CURLOPT_CAINFO] = &#039;path\to\cert\ca-bundle.crt&#039;;
</pre>
<p>If that&#8217;s something you can&#8217;t do or having trouble then you have the option to disable the SSL verification which is not recommended and should be used as a last resort.</p>
<h2>Examples</h2>
<p><strong>Initialize the Class</strong></p>
<pre class="brush: php">
try{
include_once &quot;facebookLib.php&quot;;
}
catch(Exception $o){
echo &#039;&lt;pre&gt;&#039;;
var_dump($o);
echo &#039;&lt;/pre&gt;&#039;;
}

// Create our Application instance.
$config = array(
&#039;appId&#039;  =&gt; &#039;app id&#039;,
&#039;secret&#039; =&gt; &#039;app secrent&#039;,
&#039;cookie&#039; =&gt; true,
);

// Initiate the library
$facebook = new facebookLib($config);

//$facebook-&gt;setThrowExceptions(true); // By default the class will not throw exception when errors happen, Turn this on by using this metho
//$facebook-&gt;disableSSLCheck = true; // There is an issue with using facebook graph api on a host that does not utilize an SSL certification.
// please see the documentation for this property in the facebookLibrary class file and set this to true
// only if none of the instructions work.
//$facebook-&gt;setDecodeJson(true); // Some responses return a json object, While others a PHP array or an object. Set this to true to return a php object
// when a json object is returned.
</pre>
<p><strong>Display the login button for users that did not log in yet and the logout button for the users that already logged in</strong></p>
<pre class="brush: php">

// We may or may not have this data based on a $_GET or $_COOKIE based session.
// If we get a session here, it means we found a correctly signed session using
// the Application Secret only Facebook and the Application know. We dont know
// if it is still valid until we make an API call using the session. A session
// can become invalid if it has already expired (should not be getting the
// session back in this case) or if the user logged out of Facebook.
$session = $facebook-&gt;getSession();

// If we do have a session then we have already logged in and we have a valid access_token so display the logout button
// If we don&#039;t then show the login link with the parameters of &#039;req_perms&#039; and &#039;display&#039;, The former specifies the extended permissions we would like to
// Get from the members, While the later specifies that we would like to display the permissions screen as a popup.
// For a full list of extended permissions please see Appendix #1.
if ( $session ) {
echo &#039;&lt;a href=&quot;&#039; . $facebook-&gt;getLogoutUrl() . &#039;&quot;&gt;Logout&lt;/a&gt;&#039;;
} else {
echo &#039;&lt;a href=&quot;&#039; . $facebook-&gt;getLoginUrl(array(&#039;req_perms&#039; =&gt; &#039;read_stream,email,user_photos&#039;, &#039;display&#039;=&gt;&#039;popup&#039;)) . &#039;&quot;&gt;Login&lt;/a&gt;&#039;;
}
</pre>
<p><strong>Refreshing user login status</strong></p>
<p>When a user is logged in to an application he is granted a session and an access token, That session is stored in a cookie<br />
so the user won&#8217;t need to login every single time he visits the site, That cookie is limited to a certain time (as far as i know and tested it&#8217;s two hours).<br />
In order to keep that cookie fresh and updated, It&#8217;s recommended to refresh the users logged in status. This can be done by calling the method</p>
<pre class="brush: php">
$facebook-&gt;getLoginStatusUrl();
</pre>
<p>For best results this should be called &#8216;silently&#8217; every once in a while (or when the session/cookie expires) to keep the user logged in and the cookie fresh.</p>
<p><strong>Performing the API calls</strong></p>
<p>Once we have done that we can now proceed to call api methods from the graph. the most common one will be the &#8216;/me&#8217; api method which returns the information<br />
regarding the currently logged in user.</p>
<p>The facebook sdk base class provides a method called &#8216;api&#8217; ($facebook->api(METHOD_NAME)), That method allows you basically to perform all the required facebook graph calls.<br />
What we have done is to take that and simplify it event more to create some commonly used calls and turn them into methods that are located under our facebook library.</p>
<p>So now instead of calling $facebook->api(&#8216;/me&#8217;) or $facebook->api(&#8216;/USERID&#8217;); to get the users information you can do $facebook->getInfo() for the current user logged in or $facebook->getInfo(&#8216;USERID&#8217;) for any other user.<br />
In this case there is almost no difference between them, But facebook offers a lot more then just getting a users information, And if you continue reading you will see that this library serves some really useful and common tasks<br />
that can be used to Retrieve, Post, Search, Show, Read objects both from facebook graph and facebook in general.</p>
<p>So to give you a slight idea of the features this class has, Those are the main features the class supports:</p>
<ul>
<li>Get, get objects information (an object is a user, page, event, like, group, photo, album, note, status message, etc..).</li>
<li>Get, get user information ( based on the extended permissions the user has provided you, You can get the users information such as email, activities, status messages, wall feed, news feed, movies, groups, picture, photos, albums, tags, notes, links, likes, work, education, etc&#8230; ).</li>
<li>Post, Post certain content directly to facebook ( this requires the publish_stream extended permissions and maybe event more depending on the type of content being posted, You can post status update, wall feed, like, link, note, album, photo, event, comment to a feed, attend/decline/maybe attend an event  ).</li>
<li>Search, Search for a certain content from facebook ( searching for users requires extended permissions, but you can search by types such as users, pages, groups, events, post, and any search keyword or query ).</li>
<li>Plugins, You can post any plugin and customize it with simple call to a method, Most of the plugins support both iframe and fbml tags ( publish activity boxes, like buttons, like boxes, recommendations boxes, face pile, live stream, fbml login button ).</li>
</ul>
<p>Although you are using this library you can always fall back to the regular api method call ($facebook->api(&#8216;METHOD NAME&#8217;)) when ever you like as this class extends the facebook php sdk class.</p>
<p>There is a PHPDocumentation included so you can read through the descriptions of each method to see what parameters it accepts, what it does and what it returns.</p>
<p>So for a start we will get the current logged in user information</p>
<pre class="brush: php">

// Session based graph API call.
if ($facebook-&gt;getSession()) {
try {
print_r($facebook-&gt;getInfo());
} catch (Exception $e) {
print $e-&gt;getMessage();
}
}
</pre>
<p>The above code returned</p>
<pre class="brush: php">

array(
[id] =&gt; 535332309
[name] =&gt; Vadim Vincent Gabriel
[first_name] =&gt; Vadim
[middle_name] =&gt; Vincent
[last_name] =&gt; Gabriel
[link] =&gt; http://www.facebook.com/vadim.v.gabriel
[about] =&gt; Nothing much you need to know about.
[birthday] =&gt; 01/31/1988
........
)
</pre>
<p>The same thing ca be done for any other member by passing the member id as the first argument of the method, For example:</p>
<pre class="brush: php">

// Session based graph API call.
if ($facebook-&gt;getSession()) {
try {
print_r($facebook-&gt;getInfo(4));
} catch (Exception $e) {
print $e-&gt;getMessage();
}
}
// The 4 is Mark Zuckerberg profile ID
array(
[id] =&gt; 4
[name] =&gt; Mark Zuckerberg
[first_name] =&gt; Mark
[last_name] =&gt; Zuckerberg
[link] =&gt; http://www.facebook.com/zuck
[timezone] =&gt; -7
[updated_time] =&gt; 2010-04-25T15:49:33+0000
)
</pre>
<p>If we need or want to display the members picture we can do the following</p>
<p>Note: You only need to enclose the method calls inside a try catch blocks only if you enabled the throwException option.</p>
<pre class="brush: php">

print $facebook-&gt;getPicture();
</pre>
<p>that outputs: https://graph.facebook.com/535332309/picture</p>
<p>So all you need to do to show a members picture from facebook is:</p>
<pre class="brush: php">

print &quot;&lt;img src=&#039;&quot;. $facebook-&gt;getPicture() .&quot;&#039; /&gt;&quot;;
</pre>
<p>If you need to show another user profile picture then just pass his profile ID as the first argument.<br />
The above method applies not just to users but to any other object such as page, event, group, application, photo album etc&#8230;</p>
<p>Getting information about an object never been easier, All you have to do is use the following method and pass the object unique ID</p>
<pre class="brush: php">

print_r($facebook-&gt;get(&#039;cocacola&#039;));

print_r($facebook-&gt;get(&#039;2204501798&#039;));
</pre>
<p>Outputs:</p>
<pre class="brush: php">

array
(
[id] =&gt; 40796308305
[name] =&gt; Coca-Cola
[picture] =&gt; http://profile.ak.fbcdn.net/object3/1853/100/s40796308305_2334.jpg
[link] =&gt; http://www.facebook.com/coca-cola
[category] =&gt; Consumer_products
[username] =&gt; coca-cola
[products] =&gt; Coca-Cola is the most popular and biggest-selling soft drink in history, as well as the best-known product in the world.

Created in Atlanta, Georgia, by Dr. John S. Pemberton, Coca-Cola was first offered as a fountain beverage by mixing Coca-Cola syrup with carbonated water. Coca-Cola was introduced in 1886, patented in 1887, registered as a trademark in 1893 and by 1895 it was being sold in every state and territory in the United States. In 1899, The Coca-Cola Company began franchised bottling operations in the United States.

Coca-Cola might owe its origins to the United States, but its popularity has made it truly universal. Today, you can find Coca-Cola in virtually every part of the world.
[fan_count] =&gt; 5446406
)
Array
(
[id] =&gt; 2204501798
[owner] =&gt; Array
(
[name] =&gt; Dustin Moskovitz
[id] =&gt; 6
)

[name] =&gt; Emacs users
[description] =&gt; People who use the greatest, most efficient editor around: emacs.*

*Some modifications required.
[link] =&gt; http://www.gnu.org/software/emacs/
[privacy] =&gt; OPEN
[updated_time] =&gt; 2006-07-17T10:23:21+0000
)
</pre>
<p>The following methods are used to retrieve information regarding a user, If no argument is passed to the following methods then it assumes that the user is the currently logged in user.</p>
<pre class="brush: php">

// Get the current logged in users friends
print_r($facebook-&gt;getFriends());

// Get Marks movies
print_r($facebook-&gt;getMovies(4));

// Get Marks books
print_r($facebook-&gt;getBooks(4));

// Get the current logged in users friends
print_r($facebook-&gt;getNotes());

// Get the current logged in users friends
print_r($facebook-&gt;getPhotos());

// Get the current logged in users friends
print_r($facebook-&gt;getVideos());

// Get Marks events
print_r($facebook-&gt;getEvents(4));

// Get Marks groups
print_r($facebook-&gt;getGroups(4));

// Get the current logged in users friends
print_r($facebook-&gt;getLinks());

// Get the current logged in users friends
print_r($facebook-&gt;getLikes());

// Get the current logged in users friends
print_r($facebook-&gt;getProfileFeed());

// Get the current logged in users friends
print_r($facebook-&gt;getNewsFeed());
</pre>
<p>Each of the above methods returns a PHP array, Based on the amount of content exists for each object you can except to have a limited amount of content but with an array element called paging that visiting that link will load the next content in line.<br />
For example if i have 300 links in my profile then it will load 25 of them and the returned array will have an element key called &#8216;paging&#8217; that will have the &#8216;next&#8217; and &#8216;previous&#8217; links to the next and previous pages of content.</p>
<p>If we want or need to get the event attenders to a certain event then we can do this:</p>
<pre class="brush: php">

// 331218348435 is the event ID in this case this refers to Faecbook Developer Garage at SXSW
print_r( $facebook-&gt;getEventAttenders(&#039;331218348435&#039;) );
</pre>
<p>and it will output</p>
<pre class="brush: php">

array(
[data] =&gt; Array
(
[0] =&gt; Array
(
[name] =&gt; Samer El Housseini
[id] =&gt; 876430290
)

[1] =&gt; Array
(
[name] =&gt; Ali Abrahim
[id] =&gt; 1257046849
)

[2] =&gt; Array
(
[name] =&gt; Arya Aryanie
[id] =&gt; 100000943650702
)

[3] =&gt; Array
(
[name] =&gt; Deepesh Choudhary
[id] =&gt; 100000729771921
)

[4] =&gt; Array
(
[name] =&gt; Romualdo Rossi
[id] =&gt; 100000496170854
)
..........
</pre>
<p>Note: Most object ids are really big so it you try to load an object by specifying it&#8217;s id as an integer and you can&#8217;t seem to get it right then try to specify it as a string instead.</p>
<p><strong>Posting To Facebook</strong></p>
<p>One of the tasks we would like to be able to do is to post to a users facebook profile. This library supports posting to different object. Here are a few examples in calling those methods.</p>
<p>The below methods require for an access token, You *MUST* specify it as it won&#8217;t let you post anything and you will receive a permission error message instead.<br />
Further more, You have to have the user permission to post to his profile, So make sure you requested the &#8216;publish_stream&#8217; extended permission when logging him in, Otherwise this won&#8217;t work.</p>
<p><strong>Update User Status Message</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postStatus(null, $access_token, &#039;Testing some new applications&#039;));
</pre>
<p>By specifying null as the first argument i am updating my own status, If i specify any profile id as the first argument i will post a feed to that user ids wall.</p>
<p><strong>Posting a feed to a wall</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postFeed(null, $access_token, array(&#039;message&#039;=&gt;&#039;message test&#039;, &#039;picture&#039;=&gt;&#039;some link to a picture&#039;, &#039;name&#039;=&gt;&#039;name test&#039;, &#039;description&#039;=&gt;&#039;desc test&#039;)));
</pre>
<p>By specifying null as the first argument i am posting to my own wall, If i specify any profile id as the first argument i will post a feed to that user ids wall.</p>
<p><strong>Posting a comment to a feed</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postComment(&#039;535332309_115911521775271&#039;, $access_token, &#039;Ignore me i am just testing stuff...&#039;));
</pre>
<p>The first argument is a feed id which i would like to post a comment to.</p>
<p><strong>Liking a certain object</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postLike(&#039;535332309_115911521775271&#039;, $access_token));
</pre>
<p>The first argument is a feed id i would like to &#8216;like&#8217;.</p>
<p><strong>Posting a note</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postNote(null, $access_token, array(&#039;message&#039;=&gt;&#039;testing&#039;, &#039;subject&#039;=&gt;&#039;test title&#039;)));
</pre>
<p>The first argument is the profile id to post this note to, if it&#8217;s null it will post this to my own profile, if it&#8217;s set as a users profile id it will post the note in his profile by the currently active user.</p>
<p><strong>Posting a link</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postLink(null, $access_token, array(&#039;message&#039;=&gt;&#039;link testing&#039;, &#039;link&#039;=&gt;&#039;http://www.google.com&#039;)));
</pre>
<p>The first argument is the profile id to post this link to, if it&#8217;s null it will post this to my own profile, if it&#8217;s set as a users profile id it will post the link in his profile by the currently active user.</p>
<p><strong>Creating an event</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postEvent(null, $access_token, array(&#039;description&#039;=&gt;&#039;&lt;b&gt;blah&lt;/b&gt;&#039;, &#039;owner&#039; =&gt; &#039;vadim.v.gabriel&#039;, &#039;name&#039;=&gt;&#039;my event&#039;, &#039;start_time&#039;=&gt;time()+60, &#039;end_time&#039;=&gt; time()+8400)));
</pre>
<p>The first argument is the profile id to post this event to, if it&#8217;s null it will post this to my own profile, You can&#8217;t create an event *FOR* a user.</p>
<p><strong>Attending an event</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postAttending(&#039;116508861714028&#039;, $access_token));
</pre>
<p>The current logged in user marks his status as attending to the event id specified in the first argument.</p>
<p><strong>Maybe attending an event</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postMaybeAttending(&#039;116508861714028&#039;, $access_token));
</pre>
<p>The current logged in user marks his status as  maybe attending to the event id specified in the first argument.</p>
<p><strong>Not attending an event</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postNotAttending(&#039;116508861714028&#039;, $access_token));
</pre>
<p>The current logged in user marks his status as not attending to the event id specified in the first argument.</p>
<p><strong>Post Album</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;postAlbum(null, $sess[&#039;access_token&#039;], array(&#039;name&#039;=&gt;&#039;My Album&#039;, &#039;message&#039;=&gt;&#039;created...&#039;)));
</pre>
<p>Post an album to a users profile. if the first argument is null then it will post to the current logged in user, if it&#8217;s set to a profile id of anyone else but the current logged in user then it will *NOT* create the album for the profile id set but rather for the currently logged in user.<br />
You can create an album FOR someone.</p>
<p><strong>Searching</strong></p>
<pre class="brush: php">

print_r($facebook-&gt;search(&#039;user&#039;, &#039;vadim gabriel&#039;, array(&#039;access_token&#039;=&gt;$access_token)));
</pre>
<p>The above will search for a user named &#8216;vadim gabriel&#8217;. Notice we specified an access token as it won&#8217;t search without it.</p>
<p>The above can be changed various of search calls based on the type of search you would like to perform.</p>
<p>The first argument is the type that can be one of the following: user, post, page, event, group.</p>
<p>The second argument is the search query, And the third is the access token which is required when searching.</p>
<p><strong>Social Plugins</strong></p>
<p>In todays world websites and web applications try to be more connected and integrated with sites such as twitter, facebook and flickr.</p>
<p>Facebook introduced the graph API and the social plugins (Appendix #2) on the last f8 meeting.</p>
<p>The social plugins allows developers or even site administrators to incorporate certain content from facebook directly into their websites with a simple customization.</p>
<p>This class implements and gains access to all social plugins facebook currently offers, Each has it&#8217;s own name, method and arguments you can pass and modify to customize it&#8217;s behavior and the look &#038; feel.</p>
<p>Here are some examples of using the class to display the social plugins.</p>
<p>First thing first, Make sure you&#8217;ve added the fbm namespace into the document by adding the following line into the  tag of your document.</p>
<pre class="brush: php">

xmlns:fb=&quot;http://www.facebook.com/2008/fbml&quot;
</pre>
<p>So eventually it looks like this:</p>
<pre class="brush: php">

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:fb=&quot;http://www.facebook.com/2008/fbml&quot;&gt;
</pre>
<p>If you plan on using the Open graph protocol make sure you include it&#8217;s name space in the document  tag as well.</p>
<p>Later we would probably like to include the JS SDK to be able to use the  tags and to be able to display them properly.<br />
In order to include the required JS call the following method in the head section of your document:</p>
<pre class="brush: php">

$facebook-&gt;includeScript(&#039;APPLICATION ID&#039;);
</pre>
<p>Then anything that comes after will be properly loaded and displayed since the required JS is present in the document.</p>
<p><strong>Show Comments</strong></p>
<pre class="brush: php">

print $facebook-&gt;showComments(&#039;http://www.google.com&#039;);
</pre>
<p><strong>Show faces pile</strong></p>
<pre class="brush: php">

print $facebook-&gt;showFacePile();
</pre>
<p><strong>Show Activity</strong></p>
<pre class="brush: php">

print $facebook-&gt;showActivity(&#039;http://www.google.com&#039;);
</pre>
<p><strong>Show Like Button</strong></p>
<pre class="brush: php">

print $facebook-&gt;showLike(&#039;http://yiiframework.co.il&#039;);
</pre>
<p><strong>Show Like Box</strong></p>
<pre class="brush: php">

// PAGE ID instead of URL

print $facebook-&gt;showLikeBox(&#039;45576747489&#039;);
</pre>
<p><strong>Show Live Stream</strong></p>
<pre class="brush: php">

// Application ID instead of URL

print $facebook-&gt;showLiveStream(&#039;112544488784139&#039;);
</pre>
<p><strong>Show Login Button</strong></p>
<pre class="brush: php">

print $facebook-&gt;showLoginButton();
</pre>
<p><strong>Show Recommendations Box</strong></p>
<pre class="brush: php">

print $facebook-&gt;showRecommendations(&#039;yiiframework.co.il&#039;);
</pre>
<h5>New!! Search an item on facebook return an array/json of the results. Please read the comments in the file as they show the detailed information and usage for this example.</h5>
<pre class="brush: php">
&lt;?php
// Include and initiate the library
require(&#039;facebookLib.php&#039;);
$fbtest = new facebooktest;
class facebooktest
{
    // global variables
    public $facebook;
    public $facebookAccessToken;
    public $facebookSession;

    public function __construct() {
        $this-&gt;facebook = new facebookLib(array(
                        &#039;appId&#039; =&gt; &#039;xxxx&#039;,
                        &#039;secret&#039; =&gt; &#039;xxxx&#039;,
                        &#039;cookie&#039; =&gt; true
        )); 

        facebookLib::$CURL_OPTS[CURLOPT_CAINFO] = &#039;ca-bundle.crt&#039;;

        // In the previous version thoes two were not set by default
        // The first one makes sure then on each request it will use
        // a fresh connect instance so if u had &quot;SSL ERROR...&quot; error messages before
        // it should clear those and create new fresh instances for the new calls
        // the second one actually a mistake i made that i set the default port to 80
        // while most of the time the class connects to a secure url
        // so in the new version 1.2a it was added and set to those settings
        // by default
        facebookLib::$CURL_OPTS[CURLOPT_FRESH_CONNECT] = 1;
        facebookLib::$CURL_OPTS[CURLOPT_PORT] = 443;

        $this-&gt;facebookAccessToken = $this-&gt;facebook-&gt;getAccessToken(); 

        $this-&gt;facebookSession = $this-&gt;facebook-&gt;getSession(); 

        // I&#039;m going to think of a better method of doing this, or avoiding doing this...
        if ( $this-&gt;facebookSession ) {
            echo &#039;&lt;a href=&quot;&#039; . $this-&gt;facebook-&gt;getLogoutUrl() . &#039;&quot;&gt;Logout&lt;/a&gt;&#039;;
            $this-&gt;currentAlbumFacebookArtistBadge();
            } else {
            echo &#039;&lt;a href=&quot;&#039; . $this-&gt;facebook-&gt;getLoginUrl(array(&#039;next&#039; =&gt; &#039;http://dev.com/facebookLibrary/test.php&#039;, &#039;req_perms&#039; =&gt; &#039;read_stream,email,user_photos&#039;, &#039;display&#039;=&gt;&#039;popup&#039;)) . &#039;&quot;&gt;Login&lt;/a&gt;&#039;;
        }
    } 

    // Search method
    public function currentAlbumFacebookArtistBadge() {
        //$albumInfo = $this-&gt;currentAlbumAsArray(); // dont know what his is!! 

        // By default facebook always returns a json object that you have to manipulate.
        // in the class i wrote i added a flag with getter and setter to help the developer
        // to easily flag the returned response as an array and not json.
        // this is done using the following setting
        $this-&gt;facebook-&gt;setDecodeJson(true);

        // Use search to find pages matching akon
        $possibleArtists = $this-&gt;facebook-&gt;search(&#039;page&#039;, &#039;akon&#039;); //This is returning a string not an array!!! 

        var_dump($possibleArtists);exit;

        if(is_array($possibleArtists)) {
            print_r($possibleArtists); // this should print an array with matches by the search
        } else  {
            // only will get here if the the above search method will return a json object
            // and that will happen if we set the argument in the &#039;setDecodeJson&#039; to false.
            $somethingBetter = json_decode($possibleArtists); 

            $firstChoiceID = $somethingBetter-&gt;data[0]-&gt;id; 

            print($firstChoiceID);
        } 

        if ($this-&gt;facebook-&gt;getSession())
        {
            try {
                $moreInfoFromFacebook = $this-&gt;facebook-&gt;getInfo($firstChoiceID); // Can&#039;t call this with no access info
            } catch (Exception $e) {
                print $e-&gt;getMessage();
            }
        }
        // It never seemed to make it this far last night, nor did it throw an error... It started failing higher up even though I had it working down to here previously...
    }
}
</pre>
<h5>Full Documentation and PHPDocumentation available inside the zip/tar archives.</h5>
<h3>Download</h3>
<ul>
<li><a href="http://yiiframework-co-il-extensions.googlecode.com/files/facebookLibrary1.2a2.zip">Click Here To Download ZIP Archive</a></li>
</ul>
<h4>Issues</h4>
<p><a href="http://code.google.com/p/yiiframework-co-il-extensions/issues/list" target="_blank">Report Bugs &#038; Feature Requests</a></p>
<p><strong>Appendix</strong></p>
<ol>
<li>http://developers.facebook.com/docs/authentication/permissions</li>
<li>http://developers.facebook.com/plugins</li>
</ol>
<p><strong>Contact Me</strong></p>
<p>If for some reason your comments are not appearing (due to the high amount of spam i get every day >< ) then you can either post your comment/bug/feature request in the issue tracker above, Or email me directly.</p>
<p>My email is: vadimg88 [at] gmail [dot] com</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2012/03/29/php-facebook-api-wrapper-updated-v-3-0-1/" rel="bookmark" title="03/29/2012">PHP Facebook API Wrapper Updated V 3.0.1</a> &#8211; 03/29/2012</li>
<li><a href="http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/" rel="bookmark" title="03/30/2012">USPS PHP API Wrapper | Class Library</a> &#8211; 03/30/2012</li>
</ul>
<p><!-- Similar Posts took 10.281 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii: כווץ קבצים וקוד JS בעזרת Google Closure Complier</title>
		<link>http://vadimg.com/2010/05/03/yii-%d7%9b%d7%99%d7%95%d7%95%d7%a5-%d7%a7%d7%91%d7%a6%d7%99%d7%9d-%d7%95%d7%a7%d7%95%d7%93-js-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-google-closure-complier/</link>
		<comments>http://vadimg.com/2010/05/03/yii-%d7%9b%d7%99%d7%95%d7%95%d7%a5-%d7%a7%d7%91%d7%a6%d7%99%d7%9d-%d7%95%d7%a7%d7%95%d7%93-js-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-google-closure-complier/#comments</comments>
		<pubDate>Mon, 03 May 2010 06:48:00 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=618</guid>
		<description><![CDATA[לכל אלו שמשתמשים ב Yii ומחפשים דרך לכווץ את קבצי ה JS  שלהם או הקוד לפני פרסומו באתר תוכלו להעזר בתוסף זה אשר מאפשר שימוש ב API של גוגל כדי לכווץ את הנתונים. למידע נוסף והורדה לחצו כאן.Similar Posts None Found]]></description>
			<content:encoded><![CDATA[<p>לכל אלו שמשתמשים ב Yii ומחפשים דרך לכווץ את קבצי ה JS  שלהם או הקוד לפני פרסומו באתר תוכלו להעזר בתוסף זה אשר מאפשר שימוש ב API של גוגל כדי לכווץ את הנתונים.</p>
<p><span id="more-618"></span></p>
<p><a href="http://www.yiiframework.com/extension/google-complier-extension/" target="_blank">למידע נוסף והורדה לחצו כאן.</a><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.469 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/05/03/yii-%d7%9b%d7%99%d7%95%d7%95%d7%a5-%d7%a7%d7%91%d7%a6%d7%99%d7%9d-%d7%95%d7%a7%d7%95%d7%93-js-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-google-closure-complier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii: Google Closure Complier</title>
		<link>http://vadimg.com/2010/05/03/yii-google-closure-complier/</link>
		<comments>http://vadimg.com/2010/05/03/yii-google-closure-complier/#comments</comments>
		<pubDate>Mon, 03 May 2010 06:24:23 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=616</guid>
		<description><![CDATA[This extension allows you to compile JS code by using the google compiler API, Closure Compiler. You can specify either to compile the JS code by entering the raw JS code or a URL to a JS file. More Information &#38; Download. Similar Posts None Found]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">This extension allows you to compile JS code by using the google  compiler API, <a href="http://code.google.com/closure/compiler/docs/api-ref.html">Closure  Compiler</a>. You can specify either to compile the JS code by entering the raw JS  code or a URL to a JS file.</div>
<div style="text-align: left; direction: ltr;"><span id="more-616"></span></div>
<div style="text-align: left; direction: ltr;"></div>
<div style="text-align: left; direction: ltr;"><a href="http://www.yiiframework.com/extension/google-complier-extension/" target="_blank">More Information &amp; Download.</a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.518 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/05/03/yii-google-closure-complier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii: הוספת תרגומים חסרים לטבלאות התרגומים אוטומטית</title>
		<link>http://vadimg.com/2010/05/03/yii-%d7%94%d7%95%d7%a1%d7%a4%d7%aa-%d7%aa%d7%a8%d7%92%d7%95%d7%9e%d7%99%d7%9d-%d7%97%d7%a1%d7%a8%d7%99%d7%9d-%d7%9c%d7%98%d7%91%d7%9c%d7%90%d7%95%d7%aa-%d7%94%d7%aa%d7%a8%d7%92%d7%95%d7%9e%d7%99/</link>
		<comments>http://vadimg.com/2010/05/03/yii-%d7%94%d7%95%d7%a1%d7%a4%d7%aa-%d7%aa%d7%a8%d7%92%d7%95%d7%9e%d7%99%d7%9d-%d7%97%d7%a1%d7%a8%d7%99%d7%9d-%d7%9c%d7%98%d7%91%d7%9c%d7%90%d7%95%d7%aa-%d7%94%d7%aa%d7%a8%d7%92%d7%95%d7%9e%d7%99/#comments</comments>
		<pubDate>Mon, 03 May 2010 06:22:13 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=614</guid>
		<description><![CDATA[לאחרונה כתבתי כלי שבעצם רץ ברקע בזמן הרצת האפליקציה הכתובה ב Yii כדי להוסיף תרגומים שחסרים בשפה מסויימת לטבלת התרגומים בצורה אוטומטית. בעצם זה עובד ככה שבכל פעם שמתבצע תרגום הוא בודק אם התרגום קיים בטבלה של התרגומים בשפה שנמצאת כרגע בשימוש, התרגום והבדיקה הזו לא מתבצעות ברגע ששפת המקור זהה לשפה הנוכחית. זאת אומרת [...]]]></description>
			<content:encoded><![CDATA[<p>לאחרונה כתבתי כלי שבעצם רץ ברקע בזמן הרצת האפליקציה הכתובה ב Yii כדי להוסיף תרגומים שחסרים בשפה מסויימת לטבלת התרגומים בצורה אוטומטית. בעצם זה עובד ככה שבכל פעם שמתבצע תרגום הוא בודק אם התרגום קיים בטבלה של התרגומים בשפה שנמצאת כרגע בשימוש, התרגום והבדיקה הזו לא מתבצעות ברגע ששפת המקור זהה לשפה הנוכחית. זאת אומרת שאם שפת המקור של האפליקציה הינה &#8216;אנגלית&#8217; והשפה בה המשתמש צופה כרגע באתר היא &#8216;אנגלית&#8217; לא מתבצע תרגום לכן הכלי הזה לא ירוץ.</p>
<p><span id="more-614"></span></p>
<p>חשוב לזכור שזהו כלי המעמיס על המסד וצריך להשתמש בו רק במצב של פיתוח YII_DEBUG.</p>
<p><a href="http://www.yiiframework.com/extension/db-missing-translations/" target="_blank">למידע נוסף והורדה לחץ כאן.</a><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.465 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/05/03/yii-%d7%94%d7%95%d7%a1%d7%a4%d7%aa-%d7%aa%d7%a8%d7%92%d7%95%d7%9e%d7%99%d7%9d-%d7%97%d7%a1%d7%a8%d7%99%d7%9d-%d7%9c%d7%98%d7%91%d7%9c%d7%90%d7%95%d7%aa-%d7%94%d7%aa%d7%a8%d7%92%d7%95%d7%9e%d7%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii: Add missing translations to the DB automatically</title>
		<link>http://vadimg.com/2010/05/03/yii-add-missing-translations-to-the-db-automatically/</link>
		<comments>http://vadimg.com/2010/05/03/yii-add-missing-translations-to-the-db-automatically/#comments</comments>
		<pubDate>Mon, 03 May 2010 06:15:16 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=612</guid>
		<description><![CDATA[Basically this was not designed to be an extension but rather a tool for development stage where you do not want to manually add every single language string into the database messages table for each language you need the application to be translated to. So what this does is basically a class that runs when [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">Basically this was not designed to be an extension but rather a tool for development stage where you do not want to manually add every single language string into the database messages table for each language you need the application to be translated to.</div>
<div style="text-align: left; direction: ltr;"><span id="more-612"></span></div>
<div style="text-align: left; direction: ltr;">
<p>So what this does is basically a class that runs when the onMissingTranslation event raises and it checks if the message being translated exists in the source table, If not it adds it to the source messages table if it is then it skips this stage, The next stage is to check if this message exists in the messages table with the currently used language if it is then nothing is done if not then the message is added to the messages table for translation.</p>
<p>Note: It is highly recommended NOT to use this on a production environment as it run two queries for each message to check if it exists or not, Since i didn&#8217;t plan this to be optimized and made this as a personal tool i have no plans updating this currently and is only released to help who ever needs such tool.</p>
<p><a href="http://www.yiiframework.com/extension/db-missing-translations/" target="_blank">More information &amp; Download</a></p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.712 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/05/03/yii-add-missing-translations-to-the-db-automatically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>העלאת קבצים בעזרת Java , סטייל facebook תוסף עבור Yii</title>
		<link>http://vadimg.com/2010/04/27/%d7%94%d7%a2%d7%9c%d7%90%d7%aa-%d7%a7%d7%91%d7%a6%d7%99%d7%9d-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-java-%d7%a1%d7%98%d7%99%d7%99%d7%9c-facebook-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/</link>
		<comments>http://vadimg.com/2010/04/27/%d7%94%d7%a2%d7%9c%d7%90%d7%aa-%d7%a7%d7%91%d7%a6%d7%99%d7%9d-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-java-%d7%a1%d7%98%d7%99%d7%99%d7%9c-facebook-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:37:44 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[yii]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook file uploader]]></category>
		<category><![CDATA[facebook uploader]]></category>
		<category><![CDATA[העלאה]]></category>
		<category><![CDATA[העלאת קבצים]]></category>
		<category><![CDATA[פייסבוק]]></category>
		<category><![CDATA[קבצים]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=607</guid>
		<description><![CDATA[תוסף זה מאפשר להשתמש במערכת להעלאת קבצים הכתובה ב Java, מערכת זו מיישמת את הרכיב jumploader אשר מכילה עשרות אפשרויות כגון: העלאת קבצים מרובה. ניהול תמונות &#8211; עריכה בזמן אמת, הקטנה, כיווץ, סיבוב תמונות לצדדים וכדומה.. ניהול פרטי התמונות. הרצת פונקציות ב JS בזמנים מסויימים, כמו בעת הוספת קובץ להורדה, בעת מחיקת קובץ מההורדה וכדומה. [...]]]></description>
			<content:encoded><![CDATA[<div style='direction:rtl;text-align:right;'>
<p>תוסף זה מאפשר להשתמש במערכת להעלאת קבצים הכתובה ב Java, מערכת זו מיישמת את הרכיב <a href="http://www.jumploader.com/">jumploader</a> אשר מכילה עשרות אפשרויות כגון:</p>
<ul>
<li>העלאת קבצים מרובה.</li>
<li>ניהול תמונות &#8211; עריכה בזמן אמת, הקטנה, כיווץ, סיבוב תמונות לצדדים וכדומה..</li>
<li>ניהול פרטי התמונות.</li>
<li>הרצת פונקציות ב JS בזמנים מסויימים, כמו בעת הוספת קובץ להורדה, בעת מחיקת קובץ מההורדה וכדומה.</li>
<li>תמיכה בכמה שפות</li>
<li>הגבלת כמות הקבצים המותרת להעלאה.</li>
<li>הגבלת גודל כל קובץ להעלאה וגודל סך כל הקבצים.</li>
<li>מאפיינים מותאמים אישית</li>
<li>העלאה בחלקים</li>
<li>תמיכה בהפסקה וחזרה להעלאה מאותה נקודה</li>
<li>התאמה אישית של העיצוב</li>
<li>העלאת קבצים וכיווצים לארכיון מסוג ZIP</li>
<li>העלאת תמונה בגדלים שונים</li>
<li>עיבוד מסמכים</li>
<li>העלאה לשרת ftp</li>
</ul>
<p style="text-align: left;">למידע נוסף והורדת התוסף יש לעיין בעמוד הבא: <a href="http://www.yiiframework.com/extension/jumploader-java-uploader/" target="_blank">לחץ כאן</a>.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/java-uploader-yii-extension/" rel="bookmark" title="04/27/2010">Java Uploader Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/02/07/hiphop-php-%d7%9c%d7%96%d7%95%d7%96-%d7%9e%d7%94%d7%a8/" rel="bookmark" title="02/07/2010">HipHop PHP &#8211; לזוז מהר?</a> &#8211; 02/07/2010</li>
<li><a href="http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/" rel="bookmark" title="12/27/2011">AtTheVip.com &#8211; New Yii Powered application</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
<li><a href="http://vadimg.com/2010/02/03/hiphop-for-php-move-fast/" rel="bookmark" title="02/03/2010">HipHop for PHP: Move Fast</a> &#8211; 02/03/2010</li>
</ul>
<p><!-- Similar Posts took 7.301 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/27/%d7%94%d7%a2%d7%9c%d7%90%d7%aa-%d7%a7%d7%91%d7%a6%d7%99%d7%9d-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-java-%d7%a1%d7%98%d7%99%d7%99%d7%9c-facebook-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Uploader Yii Extension</title>
		<link>http://vadimg.com/2010/04/27/java-uploader-yii-extension/</link>
		<comments>http://vadimg.com/2010/04/27/java-uploader-yii-extension/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:31:06 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[yii]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[java uploader]]></category>
		<category><![CDATA[jumploader]]></category>
		<category><![CDATA[yii extension]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=604</guid>
		<description><![CDATA[This extension allows you to add a java applet for uploading files. It uses the famous java applet called jumploader It utilizes dozen of features such as: Multi file uploading. Image manipulation (cropping, resizing, rotating, watermarking, etc..). Image metadata manipulation. JavaScript callbacks (events such as upload complete, file added, file removed, file uploaded, etc&#8230;). Internationalization [...]]]></description>
			<content:encoded><![CDATA[<div style='direction:ltr;text-align:left;'>
<p>This extension allows you to add a java applet for uploading files.  It uses the famous java applet called <a href="http://www.jumploader.com/">jumploader</a> It utilizes dozen of features such as:</p>
<ul>
<li>Multi file uploading.</li>
<li>Image manipulation (cropping, resizing, rotating, watermarking,  etc..).</li>
<li>Image metadata manipulation.</li>
<li>JavaScript callbacks (events such as upload complete, file added,  file removed, file uploaded, etc&#8230;).</li>
<li>Internationalization / Multilingual (Supports dozens of languages  out of the box such as french, german, danish, spanish and more).</li>
<li>Limit for number of allowed files to upload.</li>
<li>Limit the size of each file uploaded and size of total uploaded  files.</li>
<li>Custom attributes</li>
<li>Partitioned upload</li>
<li>Resume broken uploads</li>
<li>GUI customization</li>
<li>Zipped upload</li>
<li>Scaled images upload</li>
<li>Document processing</li>
<li>Upload to FTP server</li>
</ul>
<p style="text-align: left;">To download the extension please visit <a href="http://www.yiiframework.com/extension/jumploader-java-uploader/" target="_blank">this page</a>.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/" rel="bookmark" title="12/27/2011">AtTheVip.com &#8211; New Yii Powered application</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/%d7%94%d7%a2%d7%9c%d7%90%d7%aa-%d7%a7%d7%91%d7%a6%d7%99%d7%9d-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-java-%d7%a1%d7%98%d7%99%d7%99%d7%9c-facebook-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/" rel="bookmark" title="04/27/2010">העלאת קבצים בעזרת Java , סטייל facebook תוסף עבור Yii</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/bit-ly-url-shortener-yii-extension/" rel="bookmark" title="04/27/2010">Bit.ly URL Shortener Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
</ul>
<p><!-- Similar Posts took 6.705 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/27/java-uploader-yii-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>יצירה וניהול של גרפים &#8211; תוסף עבור Yii</title>
		<link>http://vadimg.com/2010/04/27/%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%95%d7%a0%d7%99%d7%94%d7%95%d7%9c-%d7%a9%d7%9c-%d7%92%d7%a8%d7%a4%d7%99%d7%9d-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/</link>
		<comments>http://vadimg.com/2010/04/27/%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%95%d7%a0%d7%99%d7%94%d7%95%d7%9c-%d7%a9%d7%9c-%d7%92%d7%a8%d7%a4%d7%99%d7%9d-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:28:39 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[yii]]></category>
		<category><![CDATA[גרף]]></category>
		<category><![CDATA[גרפים]]></category>
		<category><![CDATA[יצירה]]></category>
		<category><![CDATA[יצירת גרף]]></category>
		<category><![CDATA[יצירת גרפים]]></category>
		<category><![CDATA[תוסף]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=602</guid>
		<description><![CDATA[כחלק מפרוייקט מסויים שאני עובד עליו היה צורך באפשרות ליצירת גרפים, לאחר קריאת תגובות וביקורות עבור שירותים שונים המאפשרים יצירה של גרפים הוחלט לעבוד עם Fusion Charts אשר מספקים תמיכה בסוגים שונים של גרפים בפלאש. בכדי שיהיה ניתן לשתף את האפשרות הזו ולהקל על עצמי בפרוייקטים עתידיים החלטתי לכתוב את הרכיב הזה בתור תוסף לפריימורק [...]]]></description>
			<content:encoded><![CDATA[<p>כחלק מפרוייקט מסויים שאני עובד עליו היה צורך באפשרות ליצירת גרפים, לאחר קריאת תגובות וביקורות עבור שירותים שונים המאפשרים יצירה של גרפים הוחלט לעבוד עם <a href="http://fusioncharts.com" target="_blank">Fusion Charts</a> אשר מספקים תמיכה בסוגים שונים של גרפים בפלאש.</p>
<p>בכדי שיהיה ניתן לשתף את האפשרות הזו ולהקל על עצמי בפרוייקטים עתידיים החלטתי לכתוב את הרכיב הזה בתור תוסף לפריימורק אתו אני עובד בשם Yii.</p>
<p>תוכלו להוריד את הקוד ולהתקין אותו בקלות למערכת ה-Yii שלכם, הקוד כולל הסברים מפורטים כיצד לבצע כל פעולה בתוסף בכדי ליצור את הגרף המתאים לכם.</p>
<p>להורדה והסבר מפורט יש לבקר בעמוד הבא: <a href="http://www.yiiframework.com/extension/fusion-charts-extension/" target="_blank">לחץ כאן</a>.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/" rel="bookmark" title="07/13/2009">יצירת בלוג בעזרת Yii תוך 30 דקות בלבד &#8211; מדריך וידאו</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/" rel="bookmark" title="03/04/2010">תרגום של YII לעברית</a> &#8211; 03/04/2010</li>
<li><a href="http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/" rel="bookmark" title="03/11/2010">אתר תמיכה ל YII בעברית &#8211; בקרוב!</a> &#8211; 03/11/2010</li>
<li><a href="http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="03/14/2010">Yii גרסא 1.1.1 שוחררה!</a> &#8211; 03/14/2010</li>
</ul>
<p><!-- Similar Posts took 6.319 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/27/%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%95%d7%a0%d7%99%d7%94%d7%95%d7%9c-%d7%a9%d7%9c-%d7%92%d7%a8%d7%a4%d7%99%d7%9d-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fusion Charts Yii Extension</title>
		<link>http://vadimg.com/2010/04/27/fusion-charts-yii-extension/</link>
		<comments>http://vadimg.com/2010/04/27/fusion-charts-yii-extension/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:23:24 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[yii]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[fusion]]></category>
		<category><![CDATA[fusion charts]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=600</guid>
		<description><![CDATA[This extension allows you to create charts using the known fusion charts {@link http://fusioncharts.com} API. It incorporates all the available methods exists in the fusion charts PHP Class library. With this extension you will be able to create charts in various types Such as Column2D, Column3D, Bar2D, Bar3D, Lines, Areas, Pies etc. Fusion Charts online [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<p>This extension allows you to create charts using the known fusion charts {@link http://fusioncharts.com} API. It incorporates all the available methods exists in the fusion charts PHP Class library. With this extension you will be able to create charts in various types Such as Column2D, Column3D, Bar2D, Bar3D, Lines, Areas, Pies etc. Fusion Charts online documentation can be found here: http://www.fusioncharts.com/docs/</p>
<p style="text-align: left;">To download the extension please visit <a href="http://www.yiiframework.com/extension/fusion-charts-extension/" target="_blank">this page</a>.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/bit-ly-url-shortener-yii-extension/" rel="bookmark" title="04/27/2010">Bit.ly URL Shortener Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
<li><a href="http://vadimg.com/2010/04/27/java-uploader-yii-extension/" rel="bookmark" title="04/27/2010">Java Uploader Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%95%d7%a0%d7%99%d7%94%d7%95%d7%9c-%d7%a9%d7%9c-%d7%92%d7%a8%d7%a4%d7%99%d7%9d-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/" rel="bookmark" title="04/27/2010">יצירה וניהול של גרפים &#8211; תוסף עבור Yii</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2009/12/17/creating-a-yii-widget-for-fckeditor-easier-usage/" rel="bookmark" title="12/17/2009">Creating a Yii widget for FCKeditor easier usage</a> &#8211; 12/17/2009</li>
</ul>
<p><!-- Similar Posts took 7.171 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/27/fusion-charts-yii-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bit.ly URL Shortener Yii Extension</title>
		<link>http://vadimg.com/2010/04/27/bit-ly-url-shortener-yii-extension/</link>
		<comments>http://vadimg.com/2010/04/27/bit-ly-url-shortener-yii-extension/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:21:26 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[yii]]></category>
		<category><![CDATA[bit.ly]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[short]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[url shorten]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=598</guid>
		<description><![CDATA[This extensions allows you to perform REST callbacks to the {@link bit.ly} service and perform several operations such as: Shorten a url Expand a short url into it&#8217;s long form Validate api login and key Get the number of clicks for a short URL Check if a domain uses the Bitly.Pro To download the extension [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<p style="text-align: left;">This extensions allows you to perform REST callbacks to the {@link  bit.ly} service and perform several operations such as:</p>
<ul style="text-align: left;">
<li>Shorten a url</li>
<li>Expand a short url into it&#8217;s long form</li>
<li>Validate api login and key</li>
<li>Get the number of clicks for a short URL</li>
<li>Check if a domain uses the Bitly.Pro</li>
</ul>
<p style="text-align: left;">To download the extension please visit <a href="http://www.yiiframework.com/extension/bitly-url-shortener/" target="_blank">this page</a>.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/java-uploader-yii-extension/" rel="bookmark" title="04/27/2010">Java Uploader Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%99%d7%a6%d7%95%d7%a8-%d7%9b%d7%aa%d7%95%d7%91%d7%aa-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-bit-ly/" rel="bookmark" title="04/27/2010">תוסף חדש עבור Yii קיצור כתובת בעזרת bit.ly</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
<li><a href="http://vadimg.com/2009/12/17/creating-a-yii-widget-for-fckeditor-easier-usage/" rel="bookmark" title="12/17/2009">Creating a Yii widget for FCKeditor easier usage</a> &#8211; 12/17/2009</li>
</ul>
<p><!-- Similar Posts took 6.434 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/27/bit-ly-url-shortener-yii-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>תוסף חדש עבור Yii קיצור כתובת בעזרת bit.ly</title>
		<link>http://vadimg.com/2010/04/27/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%99%d7%a6%d7%95%d7%a8-%d7%9b%d7%aa%d7%95%d7%91%d7%aa-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-bit-ly/</link>
		<comments>http://vadimg.com/2010/04/27/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%99%d7%a6%d7%95%d7%a8-%d7%9b%d7%aa%d7%95%d7%91%d7%aa-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-bit-ly/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 19:17:14 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[yii]]></category>
		<category><![CDATA[bit.ly]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[פריימורק]]></category>
		<category><![CDATA[קיצור כתובות]]></category>
		<category><![CDATA[תוסף]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=595</guid>
		<description><![CDATA[לפני כשבועיים הייתי צריך אפשרות להשתמש ב API של bit.ly בכדי לקצר כתובות. כחלק מעבודתי על Yii החלטתי ליצור תוסף שישמש אותי גם בפרוייקטים עתידיים. לכן יצרתי את התוסף שבעצם מיישם את כל המחלקות ב API של Bit.ly . לא רק שהוא מקצר כתובות הוא עושה הרבה יותר מזה. בין האפשרויות הקיימות בתוסף זה ניתן [...]]]></description>
			<content:encoded><![CDATA[<p>לפני כשבועיים הייתי צריך אפשרות להשתמש ב API של <a href="http://bit.ly" target="_blank">bit.ly</a> בכדי לקצר כתובות. כחלק מעבודתי על Yii החלטתי ליצור תוסף שישמש אותי גם בפרוייקטים עתידיים. לכן יצרתי את התוסף שבעצם מיישם את כל המחלקות ב API של Bit.ly . לא רק שהוא מקצר כתובות הוא עושה הרבה יותר מזה.</p>
<p>בין האפשרויות הקיימות בתוסף זה ניתן למצוא:</p>
<ul>
<li>קיצור כתובות אינטרנט</li>
<li>הפיכת כתובת מקוצרת לגרסא המקורית הארוכה שלה</li>
<li>אפשרות לאימות הגישה ל API בעזרת מפתח מסויים</li>
<li>קבלת מספר הלחיצות עבור קישור מקוצר כלשהו</li>
<li>בדיקת אם דומיין מסויים משתמש באפשרות של Bitly.pro</li>
</ul>
<p>בכדי לקבל מידע נוסף ושימוש בתוסף זה יש לעיין בעמוד ההורדה בכתובת הבאה: <a href="http://www.yiiframework.com/extension/bitly-url-shortener/" target="_blank">לחץ כאן</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/bit-ly-url-shortener-yii-extension/" rel="bookmark" title="04/27/2010">Bit.ly URL Shortener Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/" rel="bookmark" title="07/13/2009">יצירת בלוג בעזרת Yii תוך 30 דקות בלבד &#8211; מדריך וידאו</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/" rel="bookmark" title="03/04/2010">תרגום של YII לעברית</a> &#8211; 03/04/2010</li>
<li><a href="http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/" rel="bookmark" title="03/11/2010">אתר תמיכה ל YII בעברית &#8211; בקרוב!</a> &#8211; 03/11/2010</li>
<li><a href="http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="03/14/2010">Yii גרסא 1.1.1 שוחררה!</a> &#8211; 03/14/2010</li>
</ul>
<p><!-- Similar Posts took 6.399 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/27/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%99%d7%a6%d7%95%d7%a8-%d7%9b%d7%aa%d7%95%d7%91%d7%aa-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-bit-ly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Janus &#8211; כלי ההופך ישור מימין לשמאל וההפך</title>
		<link>http://vadimg.com/2010/04/07/css-janus-%d7%9b%d7%9c%d7%99-%d7%94%d7%94%d7%95%d7%a4%d7%9a-%d7%99%d7%a9%d7%95%d7%a8-%d7%9e%d7%99%d7%9e%d7%99%d7%9f-%d7%9c%d7%a9%d7%9e%d7%90%d7%9c-%d7%95%d7%94%d7%94%d7%a4%d7%9a/</link>
		<comments>http://vadimg.com/2010/04/07/css-janus-%d7%9b%d7%9c%d7%99-%d7%94%d7%94%d7%95%d7%a4%d7%9a-%d7%99%d7%a9%d7%95%d7%a8-%d7%9e%d7%99%d7%9e%d7%99%d7%9f-%d7%9c%d7%a9%d7%9e%d7%90%d7%9c-%d7%95%d7%94%d7%94%d7%a4%d7%9a/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 05:52:27 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[(x)html]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[cs]]></category>
		<category><![CDATA[left]]></category>
		<category><![CDATA[ltr]]></category>
		<category><![CDATA[right]]></category>
		<category><![CDATA[rtl]]></category>
		<category><![CDATA[ישור CSS]]></category>
		<category><![CDATA[ישור ימין לשמאל]]></category>
		<category><![CDATA[ישור שמאל לימין]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=593</guid>
		<description><![CDATA[על פניו זה נראה שימוש, אני לא יודע אבל עד כמה זה יכול להיות מדויק, כי יש מאפיינים ב CSS שבכדי ליישר אותם יש צורך בפעולות נוספות מלבד הכיפת הכיתוב &#8216;left&#8217; ל &#8216;right&#8217; . שווה בדיקה. http://bit.ly/9tssIVSimilar Posts CSS Janus: converts website&#8217;s layout from left-to-right to right-to-left &#8211; 04/07/2010]]></description>
			<content:encoded><![CDATA[<p>על פניו זה נראה שימוש, אני לא יודע אבל עד כמה זה יכול להיות מדויק, כי יש מאפיינים ב CSS שבכדי ליישר אותם יש צורך בפעולות נוספות מלבד הכיפת הכיתוב &#8216;left&#8217; ל &#8216;right&#8217; . שווה בדיקה.</p>
<p><span id="more-593"></span></p>
<p><a href="http://bit.ly/9tssIV" target="_blank">http://bit.ly/9tssIV</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/07/css-janus-converts-websites-layout-from-left-to-right-to-right-to-left/" rel="bookmark" title="04/07/2010">CSS Janus: converts website&#8217;s layout from left-to-right to right-to-left</a> &#8211; 04/07/2010</li>
</ul>
<p><!-- Similar Posts took 2.785 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/07/css-janus-%d7%9b%d7%9c%d7%99-%d7%94%d7%94%d7%95%d7%a4%d7%9a-%d7%99%d7%a9%d7%95%d7%a8-%d7%9e%d7%99%d7%9e%d7%99%d7%9f-%d7%9c%d7%a9%d7%9e%d7%90%d7%9c-%d7%95%d7%94%d7%94%d7%a4%d7%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Janus: converts website&#8217;s layout from left-to-right to right-to-left</title>
		<link>http://vadimg.com/2010/04/07/css-janus-converts-websites-layout-from-left-to-right-to-right-to-left/</link>
		<comments>http://vadimg.com/2010/04/07/css-janus-converts-websites-layout-from-left-to-right-to-right-to-left/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 05:48:49 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[כללי]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[left]]></category>
		<category><![CDATA[ltr]]></category>
		<category><![CDATA[right]]></category>
		<category><![CDATA[rtl]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/2010/04/07/css-janus-converts-websites-layout-from-left-to-right-to-right-to-left/</guid>
		<description><![CDATA[CSS Janus: converts website&#8217;s layout from left-to-right to right-to-left http://bit.ly/9tssIVSimilar Posts CSS Janus &#8211; כלי ההופך ישור מימין לשמאל וההפך &#8211; 04/07/2010 Speed up a web site by enabling Apache file compression &#8211; 07/28/2009]]></description>
			<content:encoded><![CDATA[<p>CSS Janus: converts website&#8217;s layout from left-to-right to right-to-left</p>
<p><span id="more-591"></span></p>
<p><a href="http://bit.ly/9tssIV" target="_blank">http://bit.ly/9tssIV</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/07/css-janus-%d7%9b%d7%9c%d7%99-%d7%94%d7%94%d7%95%d7%a4%d7%9a-%d7%99%d7%a9%d7%95%d7%a8-%d7%9e%d7%99%d7%9e%d7%99%d7%9f-%d7%9c%d7%a9%d7%9e%d7%90%d7%9c-%d7%95%d7%94%d7%94%d7%a4%d7%9a/" rel="bookmark" title="04/07/2010">CSS Janus &#8211; כלי ההופך ישור מימין לשמאל וההפך</a> &#8211; 04/07/2010</li>
<li><a href="http://vadimg.com/2009/07/28/speed-up-a-web-site-by-enabling-apache-file-compression/" rel="bookmark" title="07/28/2009">Speed up a web site by enabling Apache file compression</a> &#8211; 07/28/2009</li>
</ul>
<p><!-- Similar Posts took 3.613 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/07/css-janus-converts-websites-layout-from-left-to-right-to-right-to-left/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>תוסף חדש עבור Yii &#8211; קבלת נתונים מחשבונות טויטר</title>
		<link>http://vadimg.com/2010/04/01/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%91%d7%9c%d7%aa-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%9e%d7%97%d7%a9%d7%91%d7%95%d7%a0%d7%95%d7%aa-%d7%98%d7%95/</link>
		<comments>http://vadimg.com/2010/04/01/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%91%d7%9c%d7%aa-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%9e%d7%97%d7%a9%d7%91%d7%95%d7%a0%d7%95%d7%aa-%d7%98%d7%95/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 18:17:24 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[תוסף]]></category>
		<category><![CDATA[תוסף PHP]]></category>
		<category><![CDATA[תוסף Yii]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=589</guid>
		<description><![CDATA[תוסף זה מאפשר בעצם לבצע בקשות לשרתי טויטר אשר מחזירים מידע בפורמטים שונים כמו xml, json, rss, atom בעזרת מידע זה ניתן להציג את הההודעות הנמצאות בטויטר באתר המקומי. תוסף זה משלב אפשרויות כמו שמירת הבקשות במטמון, התחברות כמשתמש וקבלת נתונים אודות החשבון וכל מה שקשור אליו, פרמטרים בבקשות, ואפשרויות רבות אחרות. למידע נוסף יש [...]]]></description>
			<content:encoded><![CDATA[<p>תוסף זה מאפשר בעצם לבצע בקשות לשרתי טויטר אשר מחזירים מידע בפורמטים שונים כמו xml, json, rss, atom בעזרת מידע זה ניתן להציג את הההודעות הנמצאות בטויטר באתר המקומי. תוסף זה משלב אפשרויות כמו שמירת הבקשות במטמון, התחברות כמשתמש וקבלת נתונים אודות החשבון וכל מה שקשור אליו, פרמטרים בבקשות, ואפשרויות רבות אחרות.</p>
<p><span id="more-589"></span></p>
<p>למידע נוסף יש לקרוא את עמוד התוסף <a href="http://www.yiiframework.com/extension/twitter-full-featured-extension/" target="_blank">בקישור הבא</a>.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%95%d7%a0%d7%99%d7%94%d7%95%d7%9c-%d7%a9%d7%9c-%d7%92%d7%a8%d7%a4%d7%99%d7%9d-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/" rel="bookmark" title="04/27/2010">יצירה וניהול של גרפים &#8211; תוסף עבור Yii</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%99%d7%a6%d7%95%d7%a8-%d7%9b%d7%aa%d7%95%d7%91%d7%aa-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-bit-ly/" rel="bookmark" title="04/27/2010">תוסף חדש עבור Yii קיצור כתובת בעזרת bit.ly</a> &#8211; 04/27/2010</li>
</ul>
<p><!-- Similar Posts took 3.441 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/01/%d7%aa%d7%95%d7%a1%d7%a3-%d7%97%d7%93%d7%a9-%d7%a2%d7%91%d7%95%d7%a8-yii-%d7%a7%d7%91%d7%9c%d7%aa-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%9e%d7%97%d7%a9%d7%91%d7%95%d7%a0%d7%95%d7%aa-%d7%98%d7%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii Framework Twitter API Extension</title>
		<link>http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/</link>
		<comments>http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 18:13:26 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=583</guid>
		<description><![CDATA[This extension allows you to perform Twitter API Calls to retrieve different type of data, With or without authentication, Using different formats for the returned data, that supports caching the returned data, parametrization requests, and user friendly errors. For full documentation and features please visit the Wiki Resources Google Code Repository Documentation Report Issues &#38; [...]]]></description>
			<content:encoded><![CDATA[<div style='text-align: left; direction: ltr;'>
<p style="text-align: left; direction: ltr;">This extension allows you to perform Twitter API Calls to retrieve  different type of data, With or without authentication, Using different  formats for the returned data, that supports caching the returned data,  parametrization requests, and user friendly errors.</p>
<p style="text-align: left; direction: ltr;"><span id="more-583"></span></p>
<h3 style="text-align: left; direction: ltr;">For full documentation and features please visit the <a href="http://code.google.com/p/yiiframework-co-il-extensions/wiki/TwitterAPIClassExamples" target="_blank">Wiki</a></h3>
<h3 style="text-align: left;">Resources</h3>
<ul style="text-align: left;">
<li><a href="http://code.google.com/p/yiiframework-co-il-extensions/">Google  Code Repository</a></li>
<li><a href="http://code.google.com/p/yiiframework-co-il-extensions/wiki/TwitterAPIClassExamples">Documentation</a></li>
<li><a href="http://code.google.com/p/yiiframework-co-il-extensions/issues/list">Report  Issues &amp; Feature Requests</a></li>
<li><a href="http://www.yiiframework.com/forum/index.php?/topic/8368-extension-twitter-api-extension-that-supports-all-twitter-api-calls/">Forum  Support Topic</a></li>
</ul>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/java-uploader-yii-extension/" rel="bookmark" title="04/27/2010">Java Uploader Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
</ul>
<p><!-- Similar Posts took 7.499 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>תוסף ל Yii &#8211; שימוש ב Gravatar</title>
		<link>http://vadimg.com/2010/04/01/%d7%aa%d7%95%d7%a1%d7%a3-%d7%9c-yii-%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-gravatar/</link>
		<comments>http://vadimg.com/2010/04/01/%d7%aa%d7%95%d7%a1%d7%a3-%d7%9c-yii-%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-gravatar/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 05:55:12 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[gravatar]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=578</guid>
		<description><![CDATA[לאחרונה כתבתי תוסף ל Yii אשר מיישם את השימוש של Gravatar לאלו שלא מכירים: צפייה בעמוד. לאחר שכתבתי את זה לפרוייקט אישי שאני עובד עליו חשבתי שיהיה שימושי לפרסם את זה כתוסף מאחר ואולי משתמשים אחרים ירצו להשתמש באותו הדבר. לכן פרסמתי אתמול את התוסף הזה בעמוד התוספים של Yii ניתן לצפות בתוסף בקישור הבא: [...]]]></description>
			<content:encoded><![CDATA[<p>לאחרונה כתבתי תוסף ל Yii  אשר מיישם את השימוש של Gravatar לאלו שלא מכירים:<a href="http://en.gravatar.com" target="_blank"> צפייה בעמוד</a>.<br />
לאחר שכתבתי את זה לפרוייקט אישי שאני עובד עליו חשבתי שיהיה שימושי לפרסם את זה כתוסף מאחר ואולי משתמשים אחרים ירצו להשתמש באותו הדבר. לכן פרסמתי אתמול את התוסף הזה בעמוד התוספים של Yii ניתן לצפות בתוסף בקישור הבא:<br />
<span id="more-578"></span><br />
ֿ<a href="http://www.yiiframework.com/extension/gravatar/">להורדה</a></p>
<p>השימוש בו הוא פשוט מאוד</p>
<pre class="brush: php">

&lt;?php
$this-&gt;widget(&#039;application.extensions.VGGravatarWidget&#039;,
array(
&#039;email&#039; =&gt; &#039;myemail[at]mydomain.com&#039;, // email to display the gravatar belonging to it
&#039;hashed&#039; =&gt; false, // if the email provided above is already md5 hashed
// then set this property to true, defaults to false
&#039;default&#039; =&gt; &#039;http://www.mysite.com/default_gravatar_image.jpg&#039;,
// if an email is not associated with a gravatar this image will be displayed,
// by default this is omitted so the Blue Gravatar icon will be displayed you can also set this to
// &quot;identicon&quot; &quot;monsterid&quot; and &quot;wavatar&quot; which are default gravatar icons
&#039;size&#039; =&gt; 50, // the gravatar icon size in px defaults to 40
&#039;rating&#039; =&gt; &#039;PG&#039;, // the Gravatar ratings, Can be G, PG, R, X, Defaults to G
&#039;htmlOptions&#039; =&gt; array( &#039;alt&#039; =&gt; &#039;Gravatar Icon&#039; ),
// Html options that will be appended to the image tag
));
?&gt;
</pre>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/" rel="bookmark" title="07/13/2009">יצירת בלוג בעזרת Yii תוך 30 דקות בלבד &#8211; מדריך וידאו</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/" rel="bookmark" title="03/04/2010">תרגום של YII לעברית</a> &#8211; 03/04/2010</li>
<li><a href="http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/" rel="bookmark" title="03/11/2010">אתר תמיכה ל YII בעברית &#8211; בקרוב!</a> &#8211; 03/11/2010</li>
<li><a href="http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="03/14/2010">Yii גרסא 1.1.1 שוחררה!</a> &#8211; 03/14/2010</li>
<li><a href="http://vadimg.com/2010/04/27/%d7%99%d7%a6%d7%99%d7%a8%d7%94-%d7%95%d7%a0%d7%99%d7%94%d7%95%d7%9c-%d7%a9%d7%9c-%d7%92%d7%a8%d7%a4%d7%99%d7%9d-%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-yii/" rel="bookmark" title="04/27/2010">יצירה וניהול של גרפים &#8211; תוסף עבור Yii</a> &#8211; 04/27/2010</li>
</ul>
<p><!-- Similar Posts took 6.207 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/01/%d7%aa%d7%95%d7%a1%d7%a3-%d7%9c-yii-%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-gravatar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Yii Extension &#8211; Gravatar Support</title>
		<link>http://vadimg.com/2010/04/01/new-yii-extension-gravatar-support/</link>
		<comments>http://vadimg.com/2010/04/01/new-yii-extension-gravatar-support/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 05:48:33 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=570</guid>
		<description><![CDATA[I have recently thought about an extension i needed for a site i was working on, And while i was writing it i though why wouldn&#8217;t i make it as an extension for the Yii framework as i already use it for the same project and other projects as well. So i would like to [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left;direction:ltr;">
<p style="text-align: left; direction: ltr;">I have recently thought about an extension i needed for a site i was working on, And while i was writing it i though why wouldn&#8217;t i make it as an extension for the Yii framework as i already use it for the same project and other projects as well. So i would like to introduce to you the new Yii Gravatar Extension.</p>
<p style="text-align: left; direction: ltr;">You can download it by visiting <a href="http://www.yiiframework.com/extension/gravatar/" target="_blank">This Page</a></p>
<p style="text-align: left;"><span id="more-570"></span></p>
<p style="text-align: left;">The usage is simple:</p>
<pre class="brush: php">

&lt;?php
$this-&gt;widget(&#039;application.extensions.VGGravatarWidget&#039;,
array(
&#039;email&#039; =&gt; &#039;myemail[at]mydomain.com&#039;, // email to display the gravatar belonging to it
&#039;hashed&#039; =&gt; false, // if the email provided above is already md5 hashed
// then set this property to true, defaults to false
&#039;default&#039; =&gt; &#039;http://www.mysite.com/default_gravatar_image.jpg&#039;,
// if an email is not associated with a gravatar this image will be displayed,
// by default this is omitted so the Blue Gravatar icon will be displayed you can also set this to
// &quot;identicon&quot; &quot;monsterid&quot; and &quot;wavatar&quot; which are default gravatar icons
&#039;size&#039; =&gt; 50, // the gravatar icon size in px defaults to 40
&#039;rating&#039; =&gt; &#039;PG&#039;, // the Gravatar ratings, Can be G, PG, R, X, Defaults to G
&#039;htmlOptions&#039; =&gt; array( &#039;alt&#039; =&gt; &#039;Gravatar Icon&#039; ),
// Html options that will be appended to the image tag
));
?&gt;
</pre>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.522 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/04/01/new-yii-extension-gravatar-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHPClasses.org השיקו את העיצוב החדש, בין המעצבים ישראלית בשם יפעת עמית.</title>
		<link>http://vadimg.com/2010/03/31/phpclasses-org-%d7%94%d7%a9%d7%99%d7%a7%d7%95-%d7%90%d7%aa-%d7%94%d7%a2%d7%99%d7%a6%d7%95%d7%91-%d7%94%d7%97%d7%93%d7%a9-%d7%91%d7%99%d7%9f-%d7%94%d7%9e%d7%a2%d7%a6%d7%91%d7%99%d7%9d-%d7%99%d7%a9/</link>
		<comments>http://vadimg.com/2010/03/31/phpclasses-org-%d7%94%d7%a9%d7%99%d7%a7%d7%95-%d7%90%d7%aa-%d7%94%d7%a2%d7%99%d7%a6%d7%95%d7%91-%d7%94%d7%97%d7%93%d7%a9-%d7%91%d7%99%d7%9f-%d7%94%d7%9e%d7%a2%d7%a6%d7%91%d7%99%d7%9d-%d7%99%d7%a9/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 07:08:50 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[phpclasses]]></category>
		<category><![CDATA[phpclasses.org]]></category>
		<category><![CDATA[עיצוב]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=568</guid>
		<description><![CDATA[לאחרונה פורסם בלוג בנושא של השקת העיצוב החדש של האתר PHPClasses.org, עיצוב האתר נעשה כמעין תחרות שבו משתתפים יכלו להציג את העיצוב שלהם לאחד האתרים הפופולרים ביותר העוסק ב PHP. אחת מהמשתתפות בתחרות הינה ישראלית העונה לשם יפעת עמית, העיצוב שלה ביחד עם עוד שניים אחרים נבחרו להיות במקומות הראשונים בתחרות. נכון לעכשיו האתר כבר [...]]]></description>
			<content:encoded><![CDATA[<p>לאחרונה פורסם בלוג בנושא של השקת העיצוב החדש של האתר <a href="http://www.phpclasses.org" target="_blank">PHPClasses.org</a>, עיצוב האתר נעשה כמעין תחרות שבו משתתפים יכלו להציג את העיצוב שלהם לאחד האתרים הפופולרים ביותר העוסק ב PHP.</p>
<p><span id="more-568"></span></p>
<p>אחת מהמשתתפות בתחרות הינה ישראלית העונה לשם יפעת עמית, העיצוב שלה ביחד עם עוד שניים אחרים נבחרו להיות במקומות הראשונים בתחרות.</p>
<p>נכון לעכשיו האתר כבר הושק עם העיצוב החדש, ניתן לקרוא אודות הראיון שנעשה עם יפעת בקישור הבא: <a href="http://www.phpclasses.org/blog/post/120-Launched-the-winning-design-of-the-Web-Design-20-contest.html" target="_blank">למידע נוסף</a>.<strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 2.436 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/03/31/phpclasses-org-%d7%94%d7%a9%d7%99%d7%a7%d7%95-%d7%90%d7%aa-%d7%94%d7%a2%d7%99%d7%a6%d7%95%d7%91-%d7%94%d7%97%d7%93%d7%a9-%d7%91%d7%99%d7%9f-%d7%94%d7%9e%d7%a2%d7%a6%d7%91%d7%99%d7%9d-%d7%99%d7%a9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב</title>
		<link>http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/</link>
		<comments>http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 17:55:15 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[yii framework]]></category>
		<category><![CDATA[אפליקציה]]></category>
		<category><![CDATA[פיתוח אפליקציות]]></category>
		<category><![CDATA[תכנות]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=565</guid>
		<description><![CDATA[לכל אלו שמעוניינים בפיתוח מהיר ויעיל בעזרת PHP בקרוב יפתח האתר Yiiframework.co.il אשר בראש ובראשונה יספק את כל ההדרכה הדרושה למשתמש המתחיל כדי לבוא ולהתחיל לפתח אפליקציות ווב במהירות. האתר יהווה תמיכה בעברית ל Yii PHP 5 Framework, באתר יהיה ניתן למצוא שלל תוספות להורדה, מדריכים ו CookBook, ניתן יהיה להגיב ולהוסיף תוכן ככה שכולם [...]]]></description>
			<content:encoded><![CDATA[<p>לכל אלו שמעוניינים בפיתוח מהיר ויעיל בעזרת PHP בקרוב יפתח האתר <a href="http://yiiframework.co.il" target="_blank">Yiiframework.co.il</a> אשר בראש ובראשונה יספק את כל ההדרכה הדרושה למשתמש המתחיל כדי לבוא ולהתחיל לפתח אפליקציות ווב במהירות. האתר יהווה תמיכה בעברית ל <a href="http://yiiframework.com" target="_blank">Yii PHP 5 Framework</a>, באתר יהיה ניתן למצוא שלל תוספות להורדה, מדריכים ו CookBook, ניתן יהיה להגיב ולהוסיף תוכן ככה שכולם יוכלו לשתף מידע באתר.</p>
<p><span id="more-565"></span></p>
<p>על מנת לקבל עדכונים והתראה ברגע שהאתר נפתח יש להכנס לאתר <a href="http://yiiframework.co.il" target="_blank">Yiiframework.co.il</a> ולהרשם לרשימת התפוצה.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/" rel="bookmark" title="03/11/2010">אתר תמיכה ל YII בעברית &#8211; בקרוב!</a> &#8211; 03/11/2010</li>
<li><a href="http://vadimg.com/2009/02/03/%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-%d7%90%d7%95-%d7%94%d7%aa%d7%97%d7%9c%d7%94-%d7%97%d7%93%d7%a9%d7%94/" rel="bookmark" title="02/03/2009">עבודה עם פריימוורק או התחלה חדשה?</a> &#8211; 02/03/2009</li>
<li><a href="http://vadimg.com/2010/06/15/%d7%90%d7%aa%d7%a8-%d7%94%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%a2%d7%91%d7%95%d7%a8-yiiframework-%d7%a2%d7%9c%d7%94/" rel="bookmark" title="06/15/2010">אתר התמיכה עבור Yiiframework עלה</a> &#8211; 06/15/2010</li>
<li><a href="http://vadimg.com/2009/02/19/zend-framework-%d7%9c%d7%9e%d7%94-%d7%91%d7%90%d7%9e%d7%aa-%d7%9b%d7%93%d7%99-%d7%9c%d7%94%d7%a9%d7%aa%d7%9e%d7%a9-%d7%91%d7%94/" rel="bookmark" title="02/19/2009">Zend Framework &#8211; למה באמת כדי להשתמש בה?</a> &#8211; 02/19/2009</li>
</ul>
<p><!-- Similar Posts took 8.221 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii גרסא 1.1.1 שוחררה!</title>
		<link>http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/</link>
		<comments>http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 07:24:48 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[1.1.1]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=562</guid>
		<description><![CDATA[הגרסא החדשה של YII שוחררה, הגרסא העדכנית ביותר כרגע הינה 1.1.1 עם מעל ל 20 באגים שתוקנו ועשרות אפשרויות חדשות שנוספו כדי מאוד לעדכן את הגרסא שהנכם משתמשים בה לגרסא האחרונה. בכדי להוריד את הגרסא האחרונה הכנסו לעמוד ההורדה של המערכת והורידו את הגרסא האחרונה. רשימת השינויים לגרסא 1.1.1 Version 1.1.1 March 14, 2010 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- [...]]]></description>
			<content:encoded><![CDATA[<p>הגרסא החדשה של YII שוחררה, הגרסא העדכנית ביותר כרגע הינה 1.1.1 עם מעל ל 20 באגים שתוקנו ועשרות אפשרויות חדשות שנוספו כדי מאוד לעדכן את הגרסא שהנכם משתמשים בה לגרסא האחרונה. בכדי להוריד את הגרסא האחרונה הכנסו <a href="http://www.yiiframework.com/download/" target="_blank">לעמוד ההורדה</a> של המערכת והורידו את הגרסא האחרונה.</p>
<p><span id="more-562"></span></p>
<p style="text-align: right;">רשימת השינויים לגרסא 1.1.1</p>
<div style="text-align: left; direction: ltr;">Version 1.1.1 March 14, 2010<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
- Bug #727: AR may lose precision for numbers of bigint type (Qiang)<br />
- Bug #738: COciColumnSchema must return &#8216;double&#8217; if precision and scale designators of NUMBER field are absent (Qiang)<br />
- Bug #816: CUniqueValidator did not work with CFormModel (Qiang)<br />
- Bug #823: typo in CLinkColumn about linkHtmlOptions (Qiang)<br />
- Bug #839: typo in CFormatter about calling method_exists() (Qiang)<br />
- Bug #865: CWidgetFactory didn&#8217;t set the owner of the newly created widgets correctly (Qiang)<br />
- Bug #869: CDateFormatter::formatTimeZone() may report error for certain locale data (Qiang)<br />
- Bug #871: A module generated by the yiic module command did not use the application layout by default (Qiang)<br />
- Bug #890: The &#8216;alias&#8217; option set in default scope was ignored when performing an eager relational query (Qiang)<br />
- Bug #932: CLocale::getWeekDayName() causes PHP error when requesting &#8216;narrow&#8217; format data (Qiang)<br />
- Bug #947: CTabView does not target tab links correctly when extra elements are put in the header (Qiang)<br />
- Bug #957: CGettextPoFile should allow optional msgctxt (Qiang)<br />
- Bug #967: CFormInputElement doesn&#8217;t respect element-id if set (Sam Dark)<br />
- Bug #988: COcSchema::quoteTableName() and quoteColumnName() should quote the names (Qiang)<br />
- Bug #995: The &#8216;alias&#8217; option set in default scope was ignored when some find methods in AR (Qiang)<br />
- Bug #996: &#8220;yiic message&#8221; command generates incorrect message file name when used in a module context (Qiang)<br />
- Bug #14 (zii): Added documentation about the &#8220;js:&#8221; prefix in CJuiSortable (sebas)<br />
- Bug #18 (zii): Change the way CJuiDatePicker sets its language option (sebas)<br />
- Bug #27 (zii): Fixed the issue that when CSRF is turned on, delete button doesn&#8217;t work for CGridView (Qiang)<br />
- Bug: Setting the &#8216;with&#8217; option in criteria array doesn&#8217;t trigger eager loading for AR (Qiang)<br />
- Bug: CActiveRecord should update oldPrimaryKey after calling save() (Qiang)<br />
- Bug: CForm renders invalid &#8216;name&#8217; and &#8216;type&#8217; attributes when used to generate nested forms (Qiang)<br />
- Bug: Fixed the bug that beforeAjaxUpdate/afterAjaxUpdate of CGridView/CListView do not take effect.<br />
- Bug: Fixed the bug that the names of URL parameters were not encoded (Qiang)<br />
- Bug: CGridView and CListView may not register the needed CSS file for the pager (Qiang)<br />
- Enh #38: Added support to allow CHtml links and buttons work in AJAX responses (Qiang)<br />
- Enh #392: Added CStringValidator::encoding to support checking the length of multibyte strings (Qiang)<br />
- Enh #686: Added CUrlManager::setBasePath() (Qiang)<br />
- Enh #726: Added CDbExpression::params (Qiang)<br />
- Enh #794: Added support to allow using * to select all primary table columns in relational AR query (Qiang)<br />
- Enh #820: Added CAccessRule::message to allow customizing authorization error message (Qiang)<br />
- Enh #826: Added CMenu::itemTemplate property and template option for each menu item (Qiang)<br />
- Enh #857: Added $exit parameter to CController::forward() (Qiang)<br />
- Enh #872: Added CFlexWidget::allowFullScreen (Qiang)<br />
- Enh #888: Added CBaseUserIdentity::setPersistentStates (Sam Dark)<br />
- Enh #898: Added support to allow defining global yiic commands (Qiang)<br />
- Enh #912: Added CModel::onUnsafeAttribute() which will log a warning message when massively assigning unsafe attributes (Qiang)<br />
- Enh #916: Added visible option to buttons in CButtonColumn (Qiang)<br />
- Enh #918: Added support to show attribute name as the label when displaying an array using CDetailView (Qiang)<br />
- Enh #936: Current module ID is no longer needed when calling CController::forward() (Qiang)<br />
- Enh #941: AR now allows MANY_MANY relation to be specified more flexibly (Qiang)<br />
- Enh #953: Added CGridView::hideHeader (Qiang)<br />
- Enh #955: Added validateValue() to CUrlValidator and CEmailValidator (Qiang)<br />
- Enh #971: Added CDbCriteria::addNotInCondition() (Sam Dark)<br />
- Enh #992: Added &#8216;data&#8217; option to CTabView.tabs property (Qiang)<br />
- Enh: Refactored the blog demo to make use of the new CActiveForm and the filtering feature of CGridView (Qiang)<br />
- Enh: Improved the code generated by yiic, including menu refactoring, filtering/search support, and using active form (Qiang)<br />
- Enh: Improved CHtml::beginForm() to auto-generate hidden fields for a GET form whose action contains query string (Qiang)<br />
- Enh: Added CDataProvider::setTotalItemCount() (Qiang)<br />
- Enh: Added skipOnError property to built-in validators (Qiang)<br />
- Enh: Added CDbConnection::initSQLs (Qiang)<br />
- Enh: Added CHtml::refresh() (Qiang)<br />
- Enh: Added CListView.loadingCssClass and CGridView.loadingCssClass (Qiang)<br />
- Enh: Added filtering support for CGridView (Qiang)<br />
- Enh: Added &#8216;template&#8217; option to each attribute specification in CDetailView (Qiang)<br />
- Chg #841: Changed CUrlManager::parsePathInfo() to non-static (Qiang)<br />
- Chg #851: yiic tool no longer turns off E_NOTICE (Qiang)<br />
- Chg #949: The init() method will be invoked after an AR instance is created by the find methods (Qiang)<br />
- Chg #974: CComponent::evaluateExpression() no longer suppresses expression error (Qiang)<br />
- Chg #978: CActiveRecord::afterSave() will now be invoked only when the saving is successful (Qiang)<br />
- Chg: Upgraded jquery to version 1.4.2 (Qiang)<br />
- Chg: CMenu will render the &#8216;active&#8217; CSS class in the container tag of the link (Qiang)<br />
- Chg: Set the default theme for JQuery UI widgets to be &#8216;base&#8217; (Qiang)<br />
- New: Added CActiveForm that performs model validations via AJAX (Qiang)<br />
- New: Added &#8216;form&#8217; command to the &#8216;yiic shell&#8217; tool (Qiang)<br />
- New: Upgraded JQuery UI to 1.8rc3 (Qiang)</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
<li><a href="http://vadimg.com/2010/04/27/java-uploader-yii-extension/" rel="bookmark" title="04/27/2010">Java Uploader Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/" rel="bookmark" title="07/13/2009">יצירת בלוג בעזרת Yii תוך 30 דקות בלבד &#8211; מדריך וידאו</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/" rel="bookmark" title="03/04/2010">תרגום של YII לעברית</a> &#8211; 03/04/2010</li>
</ul>
<p><!-- Similar Posts took 8.220 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>אתר תמיכה ל YII בעברית &#8211; בקרוב!</title>
		<link>http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/</link>
		<comments>http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 08:07:27 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[hebrew]]></category>
		<category><![CDATA[YII בעברית]]></category>
		<category><![CDATA[yiiframework hebrew]]></category>
		<category><![CDATA[תמיכה בעברית]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=559</guid>
		<description><![CDATA[לאחרונה אני עובד על כמה פרוייקטים במקביל, אחד מהם הוא האתר yiiframework.co.il אשר יהווה תמיכה בעברית ותרגום של המדריכים לשימוש ב YII. נכון לעכשיו אני עובד בעיקר על תרגום ה FRAMEWORK לעברית, לאחר מכן אני אתחיל לעבוד על האתר עצמו, העיצוב כבר נרכש ומוכן לשימוש. כל מה שנותר לעשות זה להמתין עד לסוף התרגום של [...]]]></description>
			<content:encoded><![CDATA[<p>לאחרונה אני עובד על כמה פרוייקטים במקביל, אחד מהם הוא האתר <a href="http://yiiframework.co.il" target="_blank">yiiframework.co.il</a> אשר יהווה תמיכה בעברית ותרגום של המדריכים לשימוש ב <a href="http://yiiframework.com" target="_blank">YII</a>.</p>
<p><span id="more-559"></span></p>
<p>נכון לעכשיו אני עובד בעיקר על תרגום ה FRAMEWORK לעברית, לאחר מכן אני אתחיל לעבוד על האתר עצמו, העיצוב כבר נרכש ומוכן לשימוש. כל מה שנותר לעשות זה להמתין עד לסוף התרגום של המדריך המלא לשימוש ב FRAMEWORK ולהתחיל עם פיתוח האתר עצמו, כמובן בעזרת <a href="http://yiiframework.com" target="_blank">YII</a>.</p>
<p>לכל אלו שרוצים לקחת חלק בפיתוח או לעזור בכל דבר אחר הנוגע לזה, תוכלו ליצור קשר בעזרת טופס יצירת הקשר באתר.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/03/21/yiiframework-co-il-%d7%94%d7%a8%d7%a9%d7%9e%d7%95-%d7%9c%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%93%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%a8%d7%92%d7%a2-%d7%a9%d7%94%d7%90%d7%aa%d7%a8-%d7%a4%d7%aa%d7%95/" rel="bookmark" title="03/21/2010">Yiiframework.co.il &#8211; הרשמו לקבלת עדכונים ברגע שהאתר פתוח לקהל הרחב</a> &#8211; 03/21/2010</li>
<li><a href="http://vadimg.com/2009/02/03/%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-%d7%90%d7%95-%d7%94%d7%aa%d7%97%d7%9c%d7%94-%d7%97%d7%93%d7%a9%d7%94/" rel="bookmark" title="02/03/2009">עבודה עם פריימוורק או התחלה חדשה?</a> &#8211; 02/03/2009</li>
<li><a href="http://vadimg.com/2010/08/16/%d7%94%d7%a1%d7%a4%d7%a8-%d7%94%d7%a8%d7%90%d7%a9%d7%95%d7%9f-%d7%a2%d7%91%d7%95%d7%a8-yii/" rel="bookmark" title="08/16/2010">הספר הראשון עבור Yii</a> &#8211; 08/16/2010</li>
<li><a href="http://vadimg.com/2010/06/15/%d7%90%d7%aa%d7%a8-%d7%94%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%a2%d7%91%d7%95%d7%a8-yiiframework-%d7%a2%d7%9c%d7%94/" rel="bookmark" title="06/15/2010">אתר התמיכה עבור Yiiframework עלה</a> &#8211; 06/15/2010</li>
<li><a href="http://vadimg.com/2012/04/03/yiiframework-cms-is-now-on-github/" rel="bookmark" title="04/03/2012">Yiiframework CMS is now on Github</a> &#8211; 04/03/2012</li>
</ul>
<p><!-- Similar Posts took 6.193 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/03/11/%d7%90%d7%aa%d7%a8-%d7%aa%d7%9e%d7%99%d7%9b%d7%94-%d7%9c-yii-%d7%91%d7%a2%d7%91%d7%a8%d7%99%d7%aa-%d7%91%d7%a7%d7%a8%d7%95%d7%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>תרגום של YII לעברית</title>
		<link>http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/</link>
		<comments>http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 08:59:55 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[hebrew]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=556</guid>
		<description><![CDATA[כבר כמה חודשים שאני עובד עם YII והיום תרגמתי את קובץ השפה של הפריימוורק לעברית. הוא יופיע בגרסא הבאה שתשוחרר, נכון לעכשיו ניתן להוריד את זה מהקישור הבא: http://code.google.com/p/yiidoc/downloads/listSimilar Posts Yii Framework Twitter API Extension &#8211; 04/01/2010 Fusion Charts Yii Extension &#8211; 04/27/2010 Yiiframework.co.il Code is now open sourced &#8211; 03/31/2011 הספר הראשון עבור Yii [...]]]></description>
			<content:encoded><![CDATA[<p>כבר כמה חודשים שאני עובד עם <a href="http://www.yiiframework.com" target="_blank">YII</a> והיום תרגמתי את קובץ השפה של הפריימוורק לעברית. הוא יופיע בגרסא הבאה שתשוחרר, נכון לעכשיו ניתן להוריד את זה מהקישור הבא:</p>
<p><span id="more-556"></span></p>
<p><a href="http://code.google.com/p/yiidoc/downloads/list" target="_blank">http://code.google.com/p/yiidoc/downloads/list</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2010/08/16/%d7%94%d7%a1%d7%a4%d7%a8-%d7%94%d7%a8%d7%90%d7%a9%d7%95%d7%9f-%d7%a2%d7%91%d7%95%d7%a8-yii/" rel="bookmark" title="08/16/2010">הספר הראשון עבור Yii</a> &#8211; 08/16/2010</li>
<li><a href="http://vadimg.com/2011/03/31/project-manager-source-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Project Manager &#8211; Source Code is now Open Sourced</a> &#8211; 03/31/2011</li>
</ul>
<p><!-- Similar Posts took 6.582 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/03/04/%d7%aa%d7%a8%d7%92%d7%95%d7%9d-%d7%a9%d7%9c-yii-%d7%9c%d7%a2%d7%91%d7%a8%d7%99%d7%aa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>כפתור החזור בדפדפן FF בלינוקס</title>
		<link>http://vadimg.com/2010/02/22/%d7%9b%d7%a4%d7%aa%d7%95%d7%a8-%d7%94%d7%97%d7%96%d7%95%d7%a8-%d7%91%d7%93%d7%a4%d7%93%d7%a4%d7%9f-ff-%d7%91%d7%9c%d7%99%d7%a0%d7%95%d7%a7%d7%a1/</link>
		<comments>http://vadimg.com/2010/02/22/%d7%9b%d7%a4%d7%aa%d7%95%d7%a8-%d7%94%d7%97%d7%96%d7%95%d7%a8-%d7%91%d7%93%d7%a4%d7%93%d7%a4%d7%9f-ff-%d7%91%d7%9c%d7%99%d7%a0%d7%95%d7%a7%d7%a1/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 09:07:15 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[לינוקס]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=554</guid>
		<description><![CDATA[לאלו שחפשו איך אפשר להחזיר את כפתור החזור (BACKSPACE) בדפדפן FF תחת מערכת הפעלה מסוג לינוקס (במקרה שלי זה UBUNTU) אז הנה משהו שאני עשיתי כדי להחזיר את הפעולה שהוא עשה בעבר: בחלון דפדפן FF כתבו בשורת הכתובת: about:config לאחר מכן בשורת ה Filter הזינו את הטקסט הבא: browser.backspace_action הוא אמור להציג לכם תוצאה אחת [...]]]></description>
			<content:encoded><![CDATA[<p>לאלו שחפשו איך אפשר להחזיר את כפתור החזור (BACKSPACE) בדפדפן FF תחת מערכת הפעלה מסוג לינוקס (במקרה שלי זה UBUNTU) אז הנה משהו שאני עשיתי כדי להחזיר את הפעולה שהוא עשה בעבר:</p>
<p><span id="more-554"></span></p>
<p>בחלון דפדפן FF כתבו בשורת הכתובת:</p>
<p>about:config</p>
<p>לאחר מכן בשורת ה Filter הזינו את הטקסט הבא:</p>
<p>browser.backspace_action</p>
<p>הוא אמור להציג לכם תוצאה אחת בעמודה השלישית אמורה להיות הספרה 2 לחצו עליה פעמיים ואז הוא יתן לכם להזין טקסט הזינו את הספרה 0 ולחצו אישור.</p>
<p>ברגע זה הפונקציה של כפתור החזור אמורה לעבוד.<strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.481 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/02/22/%d7%9b%d7%a4%d7%aa%d7%95%d7%a8-%d7%94%d7%97%d7%96%d7%95%d7%a8-%d7%91%d7%93%d7%a4%d7%93%d7%a4%d7%9f-ff-%d7%91%d7%9c%d7%99%d7%a0%d7%95%d7%a7%d7%a1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HipHop PHP &#8211; לזוז מהר?</title>
		<link>http://vadimg.com/2010/02/07/hiphop-php-%d7%9c%d7%96%d7%95%d7%96-%d7%9e%d7%94%d7%a8/</link>
		<comments>http://vadimg.com/2010/02/07/hiphop-php-%d7%9c%d7%96%d7%95%d7%96-%d7%9e%d7%94%d7%a8/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 10:40:45 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[אופטימיזציה]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[HIPHOP]]></category>
		<category><![CDATA[HIPHOP PHP]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=548</guid>
		<description><![CDATA[HipHop PHP היא לא קומפיילר בעצמו. אלה בעצם מתרגם קוד PHP. זאת אומרת ש HIPHOP מתרגם את קוד ה PHP שנכתב לקוד הכתוב ב C++ בצורה אופטימלית מאוד ואז משתמש ב G++ כדי לקמפל אותו.
HIPHOP מריץ את קוד המקור בסדר סמנטי ומקריב כמה אפשרויות אשר קיימות ב PHP שמשתמשים בהם לעיתים רחוקות - לדוגמא eval() לטובת ביצועים טובים יותר.
HIPHOP כולל מתרגם קוד, אשר מיישם את מה שהשרת מבצע בעת שהוא מריץ קוד PHP רגיל, ושכתוב של כמה תוספות נפוצות של PHP כדי שיהיה ניתן לנצל את הביצועים של HIPHOP.]]></description>
			<content:encoded><![CDATA[<h1>אז מה זה HIPHOP PHP?</h1>
<p>HipHop PHP היא לא קומפיילר בעצמו. אלה בעצם מתרגם קוד PHP. זאת אומרת ש HIPHOP מתרגם את קוד ה PHP שנכתב לקוד הכתוב ב C++ בצורה אופטימלית מאוד ואז משתמש ב G++ כדי לקמפל אותו.<br />
HIPHOP מריץ את קוד המקור בסדר סמנטי ומקריב כמה אפשרויות אשר קיימות ב PHP שמשתמשים בהם לעיתים רחוקות &#8211; לדוגמא eval() לטובת ביצועים טובים יותר.<br />
HIPHOP כולל מתרגם קוד, אשר מיישם את מה שהשרת מבצע בעת שהוא מריץ קוד PHP רגיל, ושכתוב של כמה תוספות נפוצות של PHP כדי שיהיה ניתן לנצל את הביצועים של HIPHOP.</p>
<h1>PHP כשפת צד שרת (סקריפט)</h1>
<p>המקור של PHP כ<a href="http://en.wikipedia.org/wiki/Server-side_scripting" target="_blank">שפת צד שרת</a> דומה לשפות כמו perl, python, ruby אשר לכולם יש את יתרון הפיתוח המהיר על ידי המתכנת והאפשרות לקפוץ בין סוגים שונים של סביבות פיתוח ועבודה. לרוב זה משתווה אל מול <a href="http://en.wikipedia.org/wiki/Compiled_language" target="_blank">שפות פיתוח מסורתיים</a> כמו C++ או <a href="http://en.wikipedia.org/wiki/Interpreted_language" target="_blank">שפות פיתוח מפרשות</a> כמו JAVA. מצד אחר שפות צד שרת ידועות בזה שהם פחות יעילות מבחינת צריכת משאבים, CPU, וזכרון של השרת. לכן זהו אתגר לאתרים גדולים לנסות ולשמור על מהירות ויעילות המערכת שלהם אשר כתובה בשפת צד שרת.</p>
<p>דרך אחת לפתור בעיה זו היא לכתוב את רוב החלקים הבעייתים הכתובים ב PHP ישירות ב C++ כתוספות ל PHP. שיטה זו הופכת את מרבית הקוד של PHP למעין גשר בין הקוד HTML שלכם אשר מציג את תוכן האתר ללוגיקה של המערכת הכתובה ב C++. מנקודת מבט טכנית זה עובד מצויין, אבל מפחית בצורה משמעותית את מספר המתכנתים אשר יכולים לעבוד על האפליקציה. לימוד שפת C++ היא רק חלק אחד וראשון לכתיבת תוספות ל PHP השני הוא להבין את <a href="http://theserverpages.com/php/manual/en/zend.php">Zend API</a>. מאחר ויש הרבה יותר מתכנתים אשר עובדים עם שפות צד שרת פתרון זה הופך להיות יקר יותר ולא יעיל במיוחד לחברות קטנות, אלו שרק התחילו וחברות שברשותם רק מתכנתי צד שרת.</p>
<h1>HIPHOP המקור</h1>
<p>HIPHOP לראשונה נכתב לפני כמה שנים ב FACEBOOK, הם התחילו בזה שהם הפכו חלקי קוד PHP ל C++. השפות דומות מבחינה סינטטית, ו C++ הרבה יותר יעיל מ PHP כזה נוגע לצריכת זכרון ו CPU. למי שלא יודע PHP במקור כתובה ב C. הם ידעו שאי אפשר יהיה לכתוב את כל המערכת אשר כתובה ב 90% ב PHP ל C++, אבל תהו אם יהיה ניתן להמיר את קוד ה PHP ל C++ בעזרת תוכנה.</p>
<p>מציאת דרכים חדשות לשפר את ביצועי שפת ה PHP אינו דבר חדש. בזמן הרצה המנוע של ZEND הופך את קוד המקור של PHP לקוד שנקרא <a href="http://en.wikipedia.org/wiki/Opcode" target="_blank">opcode </a>לאחר מכן זה עובר דרך <a href="http://en.wikipedia.org/wiki/Zend_Engine" target="_blank">Zend Engine.</a> פרויקטים אשר נכתבו תחת קוד פתוח כמו <a href="http://pecl.php.net/package/APC">APC</a> and <a href="http://eaccelerator.net/">eAccelerator </a>נועדו כדי לשמור את הפלט של קוד ה PHP ולשמור אותו במטמון ומשתמשים בהם בהרבה אתרים כיום ברשת כדי לזרז את תהליך טעינת העמוד. בנוסף ישנו את ה <a href="http://en.wikipedia.org/wiki/Zend_Server">Zend Server</a> ,מוצר בתשלום אשר מריץ מערכות הכתובת ב PHP בצורה מהירה שכבר כל המודלים הנחוצים כלולים בו. במקום הם חשבו להפוך את קוד המקור של PHP ישירות ל C++ ולאחר מכן יהיה ניתן להשתמש בו כשפת מחשב רגילה. גם קומפילציה של PHP אינו רעיון חדש, פרוייקטים בקוד פתוח כמו <a href="http://www.roadsend.com/">Roadsend</a> ו <a href="http://www.phpcompiler.org/">phc</a> מקמפלים קוד PHP ל C,<a href="http://www.phpcompiler.org/"> </a>בנוסף <a href="http://www.caucho.com/resin-3.0/quercus/">Quercus</a> מקמפל קוד PHP ל JAVA, ו <a href="http://www.php-compiler.net/">Phalanger</a> מקמפל קוד PHP ל NET. .</p>
<p>לאחר שמונה חודשים, היה לצוות המהנדסים בפייסבוק מספיק קוד כדי להציג שדרך זו מריצה את הקוד מהר יותר. למעלה משנה מאוחר יותר הם החלו להשתמש בשיטה זו בשרתים שלהם וראו שיפור ניכר במהירות ובביצועים של האתר כש HIPHOP נכנס לתמונה. כיום 90% מהשרתים של פייסבוק עובדים תחת HIPHOP.</p>
<h1>כיצד זה עובד?</h1>
<p>בעקרון האתגר העיקרי יהיה לגשר בין הפער הניכר בין PHP ו C++. בכל זאת PHP הינה שפת צד שרת עם כתיבה דינאמית. C++ הינה שפת מחשב עם עם כתיבה סטטית.</p>
<p>תהליך ההמרה כולל את השלבים הבאים:</p>
<ol>
<li>נתוח סטטי של הקוד, איפה שאוספים מידע לגבי מי מגדיר מה ותחת איזו תלות,</li>
<li>הסקה איפה שנבחר סוג הנתון, ב C++ <a href="http://he.wikipedia.org/wiki/%D7%A1%D7%A7%D7%9C%D7%A8_%28%D7%9E%D7%AA%D7%9E%D7%98%D7%99%D7%A7%D7%94%29" target="_blank">סקלר</a>, בין סטרינג, מערך, אובייקט, מחלקה ואחרים, ו,</li>
<li>המרת הקוד, שברוב המקרים זהו תהליך ההופך ביטויים ב PHP לביטויים ב C++.</li>
</ol>
<p><strong>תרשים:</strong></p>
<p style="text-align: center;"><img class="aligncenter" title="תהליך ההמרה" src="http://wiki.developers.facebook.com/images/2/23/HipHop_transformation_process.png" alt="" width="717" height="448" /></p>
<p>לסיכום HIPHOP מאפשר להשתמש בהיבטים של PHP תוך שימוש ביתרונות היעילות והביצועים של C++. בגדול HIPHOP נכתב בלמעלה מ 300,000 שורות קוד, ולמעלה מ 5,000 בדיקות נעשו.</p>
<h1>איפה מתחילים בשימוש של זה?</h1>
<p>נכון לעכשיו (07.02.10) לא ניתן להוריד עדיין את קוד המקור של HIPHOP אבל ברגע שהוא יעלה תוכלו למצוא אותו <a href="http://developers.facebook.com/hiphop-php/" target="_blank">באתר הבית של HIPHOP בפייסבוק</a>, כמו כן מומלץ אך לא חייב להצטרף לרשימת התפוצה של HIPHOP בגוגל כדי לקבל מידע, עזרה בנושא זה ברגע שיהיה ניתן להוריד ולהשתמש בתוסף.</p>
<p>כדי להצטרף לרשימה <a href="http://groups.google.com/group/hiphop-php-dev" target="_blank">בקרו באתר הזה.</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/02/03/hiphop-for-php-move-fast/" rel="bookmark" title="02/03/2010">HipHop for PHP: Move Fast</a> &#8211; 02/03/2010</li>
<li><a href="http://vadimg.com/2009/02/04/twitter-%d7%98%d7%95%d7%a2%d7%a0%d7%99%d7%9d-%d7%a9%d7%94%d7%9d-%d7%96%d7%95%d7%a8%d7%a7%d7%99%d7%9d-%d7%90%d7%aa-rails-%d7%95%d7%a2%d7%95%d7%91%d7%a8%d7%99%d7%9d-%d7%9c-php/" rel="bookmark" title="02/04/2009">Twitter טוענים שהם זורקים את Rails ועוברים ל PHP</a> &#8211; 02/04/2009</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
</ul>
<p><!-- Similar Posts took 7.684 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/02/07/hiphop-php-%d7%9c%d7%96%d7%95%d7%96-%d7%9e%d7%94%d7%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HipHop for PHP: Move Fast</title>
		<link>http://vadimg.com/2010/02/03/hiphop-for-php-move-fast/</link>
		<comments>http://vadimg.com/2010/02/03/hiphop-for-php-move-fast/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 08:27:34 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[אופטימיזציה]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[G++]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=544</guid>
		<description><![CDATA[HipHop for PHP isn't technically a compiler itself. Rather it is a source code transformer. HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it. HipHop executes the source code in a semantically equivalent manner and sacrifices some rarely used features — such as eval() — in exchange for improved performance. HipHop includes a code transformer, a reimplementation of PHP's runtime system, and a rewrite of many common PHP Extensions to take advantage of these performance optimizations.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;direction: ltr;">One of the key values at Facebook is to move fast. For the past six years, we have been able to accomplish a lot thanks to rapid pace of development that PHP offers. As a programming language, PHP is simple. Simple to learn, simple to write, simple to read, and simple to debug. We are able to get new engineers ramped up at Facebook a lot faster with PHP than with other languages, which allows us to innovate faster.</p>
<p style="text-align: left;"><img src="http://wiki.developers.facebook.com/images/a/ac/HipHop_logo_white.png" alt="" /></p>
<p style="text-align: left;">Today I&#8217;m excited to share the project a small team of amazing people and I have been working on for the past two years; HipHop for PHP. With HipHop we&#8217;ve reduced the CPU usage on our Web servers on average by about fifty percent, depending on the page. Less CPU means fewer servers, which means less overhead. This project has had a tremendous impact on Facebook. We feel the Web at large can benefit from HipHop, so we are releasing it as open source this evening in hope that it brings a new focus toward scaling large complex websites with PHP. While HipHop has shown us incredible results, it&#8217;s certainly not complete and you should be comfortable with beta software before trying it out.</p>
<p style="text-align: left;">HipHop for PHP isn&#8217;t technically a compiler itself. Rather it is a source code transformer. HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it. HipHop executes the source code in a semantically equivalent manner and sacrifices some rarely used features — such as eval() — in exchange for improved performance. HipHop includes a code transformer, a reimplementation of PHP&#8217;s runtime system, and a rewrite of many common PHP Extensions to take advantage of these performance optimizations.</p>
<h2 style="text-align: left;">Scaling PHP as a Scripting Language</h2>
<p style="text-align: left;">PHP&#8217;s roots are those of a <a href="http://en.wikipedia.org/wiki/Server-side_scripting">scripting language</a>, like Perl, Python, and Ruby, all of which have major benefits in terms of programmer productivity and the ability to iterate quickly on products. This is compared to more traditional <a href="http://en.wikipedia.org/wiki/Compiled_language">compiled languages</a> like C++ and <a href="http://en.wikipedia.org/wiki/Interpreted_language">interpreted languages</a> like Java. On the other hand, scripting languages are known to generally be less efficient when it comes to CPU and memory usage. Because of this, it&#8217;s been challenging to scale Facebook to over 400 billion PHP-based page views every month.</p>
<p style="text-align: left;">One common way to address these inefficiencies is to rewrite the more complex parts of your PHP application directly in C++ as PHP Extensions. This largely transforms PHP into a glue language between your front end HTML and application logic in C++. From a technical perspective this works well, but drastically reduces the number of engineers who are able to work on your entire application. Learning C++ is only the first step to writing PHP Extensions, the second is understanding the <a href="http://theserverpages.com/php/manual/en/zend.php">Zend APIs</a>. Given that our engineering team is relatively small — there are over one million users to every engineer — we can&#8217;t afford to make parts of our codebase less accessible than others.</p>
<p style="text-align: left;">Scaling Facebook is particularly challenging because almost every page view is a logged-in user with a customized experience. When you view your home page we need to look up all of your friends, query their most relevant updates (from a custom service we&#8217;ve built called Multifeed), filter the results based on your privacy settings, then fill out the stories with comments, photos, likes, and all the rich data that people love about Facebook. All of this in just under a second. HipHop allows us to write the logic that does the final page assembly in PHP and iterate it quickly while relying on custom back-end services in C++, Erlang, Java, or Python to service the News Feed, search, Chat, and other core parts of the site.</p>
<p style="text-align: left;">Since 2007 we&#8217;ve thought about a few different ways to solve these problems and have even tried implementing a few of them. The common suggestion is to just rewrite Facebook in another language, but given the complexity and speed of development of the site this would take some time to accomplish. We&#8217;ve rewritten aspects of the <a href="http://en.wikipedia.org/wiki/Zend_Engine">Zend Engine</a> — PHP&#8217;s internals — and contributed those patches back into the PHP project, but ultimately haven&#8217;t seen the sort of performance increases that are needed. HipHop&#8217;s benefits are nearly transparent to our development speed.</p>
<h2 style="text-align: left;">Hacking Up HipHop</h2>
<p style="text-align: left;">One night at a Hackathon a few years ago (see <a href="http://www.facebook.com/video/video.php?v=124728580468&amp;ref=mf">Prime Time Hack</a>), I started my first piece of code transforming PHP into C++. The languages are fairly similar syntactically and C++ drastically outperforms PHP when it comes to both CPU and memory usage. Even PHP itself is written in C. We knew that it was impossible to successfully rewrite an entire codebase of this size by hand, but wondered what would happen if we built a system to do it programmatically.</p>
<p style="text-align: left;">Finding new ways to improve PHP performance isn&#8217;t a new concept. At run time the Zend Engine turns your PHP source into opcodes which are then run through the Zend Virtual Machine. Open source projects such as <a href="http://pecl.php.net/package/APC">APC</a> and <a href="http://eaccelerator.net/">eAccelerator</a> cache this output and are used by the majority of PHP powered websites.  There&#8217;s also <a href="http://en.wikipedia.org/wiki/Zend_Server">Zend Server</a>, a commercial product which makes PHP faster via opcode optimization and caching. Instead, we were thinking about transforming PHP source directly into C++ which can then be turned into native machine code. Even compiling PHP isn&#8217;t a new idea, open source projects like <a href="http://www.roadsend.com/">Roadsend</a> and <a href="http://www.phpcompiler.org/">phc</a> compile PHP to C, <a href="http://www.caucho.com/resin-3.0/quercus/">Quercus</a> compiles PHP to Java, and <a href="http://www.php-compiler.net/">Phalanger</a> compiles PHP to .Net.</p>
<p style="text-align: left;">Needless to say, it took longer than that single Hackathon. Eight months later, I had enough code to demonstrate it is indeed possible to run faster with compiled code. We quickly added Iain Proctor and Minghui Yang to the team to speed up the pace of the project. We spent the next ten months finishing up all the coding and the following six months testing on production servers. We are proud to say that at this point, we are serving over 90% of our Web traffic using HipHop, all only six months after deployment.</p>
<h2 style="text-align: left;">How HipHop Works</h2>
<p style="text-align: left;">The main challenge of the project was bridging the gap between PHP and C++. PHP is a scripting language with dynamic, weak typing. C++ is a compiled language with static typing. While PHP allows you to write magical dynamic features, most PHP is relatively straightforward. It&#8217;s more likely that you see <code>if (...) {...} else {..}</code> than it is to see <code>function foo($x) { include $x; }</code>. This is where we gain in performance. Whenever possible our generated code uses static binding for functions and variables. We also use type inference to pick the most specific type possible for our variables and thus save memory.</p>
<p style="text-align: left;">The transformation process includes three main steps:</p>
<ol style="text-align: left;">
<li>Static analysis where we collect information on who declares what and dependencies,</li>
<li>Type inference where we choose the most specific type between C++ scalars, String, Array, classes, Object, and Variant, and</li>
<li>Code generation which for the most part is a direct correspondence from PHP statements and expressions to C++ statements and expressions.</li>
</ol>
<p style="text-align: left;"><a href="http://wiki.developers.facebook.com/images/2/23/HipHop_transformation_process.png" rel="lightbox[544]"><img src="http://wiki.developers.facebook.com/images/2/23/HipHop_transformation_process.png" alt="" width="450" height="281" /></a></p>
<p style="text-align: left;">We have also developed HPHPi, which is an experimental interpreter designed for development. When using HPHPi you don&#8217;t need to compile your PHP source code before running it. It&#8217;s helped us catch bugs in HipHop itself and provides engineers a way to use HipHop without changing how they write PHP.</p>
<p style="text-align: left;">Overall HipHop allows us to keep the best aspects of PHP while taking advantage of the performance benefits of C++. In total, we have written over 300,000 lines of code and more than 5,000 unit tests. All of this will be released this evening on GitHub under the open source PHP license.</p>
<h2 style="text-align: left;">Learn More this Evening</h2>
<p style="text-align: left;">This evening we&#8217;re hosting a small group of developers to dive deeper into HipHop for PHP and will be streaming this tech talk live. Check back here around 7:30pm Pacific time if you&#8217;d like to watch.</p>
<p style="text-align: left;">As I&#8217;m sure there will be plenty of questions, starting this evening take a look at the <a href="http://github.com/facebook/hiphop-php/wikis">HipHop wiki</a> or join the <a href="http://groups.google.com/group/hiphop-php-dev">HipHop developer mailing list</a>.  You&#8217;ll also find us at <a href="http://www.fosdem.org/2010/schedule/events/scalingfacebook">FOSDEM</a>, <a href="http://www.socallinuxexpo.org/scale8x/">SCALE</a>, <a href="http://www.phpconference.co.uk/">PHP UK</a>, <a href="http://www.confoo.ca/">ConFoo</a>, <a href="http://tek.phparch.com/">TEK X</a>, and <a href="http://en.oreilly.com/oscon2010">OSCON</a> over the next few months talking about HipHop for PHP. We&#8217;re very excited to evolve HipHop into a thriving open source project along with all of you.</p>
<p style="text-align: left;">Source: <a href="http://developers.facebook.com/news.php?tab=blog" target="_blank">Facebook</a></p>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/02/07/hiphop-php-%d7%9c%d7%96%d7%95%d7%96-%d7%9e%d7%94%d7%a8/" rel="bookmark" title="02/07/2010">HipHop PHP &#8211; לזוז מהר?</a> &#8211; 02/07/2010</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
</ul>
<p><!-- Similar Posts took 8.287 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2010/02/03/hiphop-for-php-move-fast/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating a Yii widget for FCKeditor easier usage</title>
		<link>http://vadimg.com/2009/12/17/creating-a-yii-widget-for-fckeditor-easier-usage/</link>
		<comments>http://vadimg.com/2009/12/17/creating-a-yii-widget-for-fckeditor-easier-usage/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 11:12:39 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[fckeditor]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=514</guid>
		<description><![CDATA[Creating a Yii widget for FCKeditor easier usage To start with you need to download the latest stable release of FCKeditor. Extract the downloaded file and place the fckeditor/ folder in your applications webroot directory. Next to do is to download the Yii FCKeditor extension, created by Ascomae. Extract the downloaded file, and place the [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<h1>Creating a Yii widget for FCKeditor easier usage</h1>
<p>To start with you need to download the latest stable release of <a href="http://www.fckeditor.net/download" target="_blank">FCKeditor</a>. Extract the downloaded file and place the fckeditor/ folder in your applications webroot directory.</p>
<p><span id="more-514"></span></p>
<p>Next to do is to download the Yii FCKeditor <a href="http://www.yiiframework.com/extension/fckeditor-integration/" target="_blank">extension</a>, created by Ascomae. Extract the downloaded file, and place the fckeditor/ widget folder in your web applications protected/extensions/ directory.<br />
<strong>Configuring the FCKeditorWidget</strong></p>
<p>In the view where you want to use the FCKeditorWidget:</p>
<pre class="brush: php">
&lt;?php $this-&gt;widget(&#039;application.extensions.fckeditor.FCKEditorWidget&#039;,array(
    &quot;model&quot;=&gt;$pages,                # Data-Model
    &quot;attribute&quot;=&gt;&#039;content&#039;,         # Attribute in the Data-Model
    &quot;height&quot;=&gt;&#039;400px&#039;,
    &quot;width&quot;=&gt;&#039;100%&#039;,
    &quot;toolbarSet&quot;=&gt;&#039;Basic&#039;,          # EXISTING(!) Toolbar (see: fckeditor.js)
    &quot;fckeditor&quot;=&gt;Yii::app()-&gt;basePath.&quot;/../fckeditor/fckeditor.php&quot;,
                                    # Path to fckeditor.php
    &quot;fckBasePath&quot;=&gt;Yii::app()-&gt;baseUrl.&quot;/fckeditor/&quot;,
                                    # Realtive Path to the Editor (from Web-Root)
    &quot;config&quot; =&gt; array(
        &quot;EditorAreaCSS&quot;=&gt;Yii::app()-&gt;baseUrl.&#039;/css/index.css&#039;,),
                                    # http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options
                                    # Additional Parameter (Can&#039;t configure a Toolbar dynamicly)
    ) ); ?&gt;
</pre>
<ul>
<li>the model property is the instance of the Model to be associated with.</li>
<li>attribute the Model attribute to be associated with.</li>
<li>fckeditor, the path to the fckeditor php file.</li>
<li>fckBasePath, the url to the editor frontend to be loaded inside the iframe.</li>
<li>config Most parameter in the fckconfig.js can be changed within this config. http://docs.fckeditor.net/FCKeditor_2.x/Developers_Guide/Configuration/Configuration_Options</li>
</ul>
<p>If those instructions have been followed exactly the FCKeditor should work correctly.</p></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/04/27/bit-ly-url-shortener-yii-extension/" rel="bookmark" title="04/27/2010">Bit.ly URL Shortener Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/04/27/java-uploader-yii-extension/" rel="bookmark" title="04/27/2010">Java Uploader Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/" rel="bookmark" title="11/17/2010">PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</a> &#8211; 11/17/2010</li>
<li><a href="http://vadimg.com/2009/07/13/yii-creating-a-blog-in-just-30-minutes-screencast/" rel="bookmark" title="07/13/2009">Yii &#8211; Creating a blog in just 30 minutes &#8211; ScreenCast</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
</ul>
<p><!-- Similar Posts took 7.325 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/12/17/creating-a-yii-widget-for-fckeditor-easier-usage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>גרסא חדשה לפריימוורק Yii &#8211; 1.0.11</title>
		<link>http://vadimg.com/2009/12/17/%d7%92%d7%a8%d7%a1%d7%90-%d7%97%d7%93%d7%a9%d7%94-%d7%9c%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-yii-1-0-11/</link>
		<comments>http://vadimg.com/2009/12/17/%d7%92%d7%a8%d7%a1%d7%90-%d7%97%d7%93%d7%a9%d7%94-%d7%9c%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-yii-1-0-11/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 11:02:25 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=511</guid>
		<description><![CDATA[&#8220;The 1.0.11 release is a maintenance release over the previous 1.0 releases. It includes about ten bug fixes and many minor feature enhancements. Please check the change log for complete list of changes.&#8221; צוות הפיתוח של Yii פרסם גרסא חדשה ל FRAMEWORK שלהם, הגרסא האחרונה הינה 1.0.11 (שזאת כמובן הגרסא היציבה גרסאת ה 1.1 כרגע [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<p>&#8220;The 1.0.11 release is a maintenance release over the previous 1.0 releases. It includes about ten bug fixes and many minor feature enhancements. Please check the change log for complete list of changes.&#8221;</p>
<p><span id="more-511"></span></div>
<p>צוות הפיתוח של Yii פרסם גרסא חדשה ל FRAMEWORK שלהם, הגרסא האחרונה הינה 1.0.11 (שזאת כמובן הגרסא היציבה גרסאת ה 1.1 כרגע בשלב RC1).</p>
<p>אחד הדברים החשובים שנוספו לגרסא זו (1.0.11) היא האפשרות לקבל את מה שכרגע מוגדר בסאב-דומיין של הקישור כפרמטר GET לכל דבר.</p>
<p>לדוגמא נתון הקישור:</p>
<p>http://en.domain.com/page/1</p>
<p>ניתן דרך המערכת לקבל את ה &#8216;en&#8217; בתור פרמטר GET לכל דבר, דבר מאוד חשוב שכבר בקשו אותו בעבר והמפתחים החליטו להוסיפו (שדרך אגב גם קיים ב ZF).</p>
<p>פרטים  נוספים לגבי האפשרות הזאת והסבר ניתן למצוא <a href="http://www.yiiframework.com/doc/guide/topics.url" target="_blank">כאן</a></p>
<p>רשימת כל השינויים שבוצעו בגרסא הזאת:</p>
<div style="direction: ltr; text-align: left;">
<pre>Version 1.0.11 December 13, 2009
--------------------------------
- Bug #608: yiic webapp command may generate incorrect path referring to yii scripts (Qiang)
- Bug #637: CDateTimeParser::parse() may generate unexpected result offset by the timezone in some environment (Qiang)
- Bug #639: CJSON::decode() should respect the second parameter recursively (Qiang)
- Bug #641: CDbCache::gc() is not defined (Qiang)
- Bug #651: Fixed a bug in Oracle driver that may cause big loop (Qiang)
- Bug #653: CDbMessageSource does translate messages when caching is enabled (Qiang)
- Bug #670: Requirements checker page shows wrong minute (Qiang)
- Bug #691: CUploadedFile::saveAs() may not return correct value for some PHP versions (Qiang)
- Bug #692: CHtml::listOptions() ignores the HTML options when handling nested options (Qiang)
- Bug #710: CRequiredValidator does not work as expected when its requiredValue is not null (Qiang)
- Bug: CQueue::peek() should return the first item in the queue (Qiang)
- Enh #629: Added support for specifying shell command search path via an environment variable YIIC_SHELL_COMMAND_PATH (Qiang)
- Enh #643: Enhanced CAccessControlFilter::expression, COutputCache::varyByExpression and CExpressionDependency::expression so that they can use PHP callback (Qiang)
- Enh #665: Added support for using CStarRating to collect tabular input (Qiang)
- Enh #672: Added Italian translation of error views (Qiang)
- Enh #674: Improved CPgsqlSchema to support auto-incremental column in composite primary  key (Qiang)
- Enh #677: Improved CPgsqlColumnSchema to recognize more column data types (Qiang)
- Enh #679: Added support for parsing and creating URLs with parameterized hostnames (Qiang)
- Enh #684: Improved Yii::import() to throw exception when set_include_path fails (Qiang)
- Enh #685: Added support for recognizing "Z" in CDateFormatter (Qiang)
- Enh #690: Enhanced the email validator pattern to capture 99% valid email addresses (Qiang)
- Enh #694: CActiveRecord count methods will ignore criterias that are incomatible with COUNT SQL statement (Qiang)
- Enh #697: Relational AR queries now also invoke CActiveRecord::beforeFind() (Qiang)
- Enh #703: Upgraded autocomplete js code to version 1.1.0 (Qiang)
- Enh #715: CHtml::textArea and CHtml::activeTextArea should respect the 'encode' option (Qiang)
- Enh: Added core message translation in Thai (Peerajak)
- Enh: Allow CHtml::label() and CHtml::activeLabel() not to render the 'for' attribute when it is set false (Qiang)
- Chg #723: When merging a CDbCriteria with another, the latter's order clause will take precedence over the former (Qiang)
- New #709: Added core message translation in Bosnian language (kenci81)</pre>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.972 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/12/17/%d7%92%d7%a8%d7%a1%d7%90-%d7%97%d7%93%d7%a9%d7%94-%d7%9c%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-yii-1-0-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii &#8211; Version 1.0.11 Released</title>
		<link>http://vadimg.com/2009/12/17/yii-version-1-0-11-released/</link>
		<comments>http://vadimg.com/2009/12/17/yii-version-1-0-11-released/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 10:54:28 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[yii]]></category>
		<category><![CDATA[חדשות]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=507</guid>
		<description><![CDATA[&#8220;The 1.0.11 release is a maintenance release over the previous 1.0 releases. It includes about ten bug fixes and many minor feature enhancements. Please check the change log for complete list of changes.&#8221; Yii development team have just released the new version of the Yii 1.0 series, The Yii 1.0.11. One of the main feature [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<p>&#8220;The 1.0.11 release is a maintenance release over the previous 1.0 releases. It includes about ten bug fixes and many minor feature enhancements. Please check the change log for complete list of changes.&#8221;</p>
<p><span id="more-507"></span></p>
<p>Yii development team have just released the new version of the Yii 1.0 series, The Yii 1.0.11.</p>
<p>One of the main feature enhancements is Parameterizing Hostnames. Meaning you can have URLs like:</p>
<p>http://en.domain.com/page/1</p>
<p>And retrieve the &#8216;en&#8217; part of the sub-domain name as one of th _GET parameters. More info about this can be found <a href="http://www.yiiframework.com/doc/guide/topics.url" target="_blank">here</a></p>
<p>Complete change log:</p>
<pre>Version 1.0.11 December 13, 2009
--------------------------------
- Bug #608: yiic webapp command may generate incorrect path referring to yii scripts (Qiang)
- Bug #637: CDateTimeParser::parse() may generate unexpected result offset by the timezone in some environment (Qiang)
- Bug #639: CJSON::decode() should respect the second parameter recursively (Qiang)
- Bug #641: CDbCache::gc() is not defined (Qiang)
- Bug #651: Fixed a bug in Oracle driver that may cause big loop (Qiang)
- Bug #653: CDbMessageSource does translate messages when caching is enabled (Qiang)
- Bug #670: Requirements checker page shows wrong minute (Qiang)
- Bug #691: CUploadedFile::saveAs() may not return correct value for some PHP versions (Qiang)
- Bug #692: CHtml::listOptions() ignores the HTML options when handling nested options (Qiang)
- Bug #710: CRequiredValidator does not work as expected when its requiredValue is not null (Qiang)
- Bug: CQueue::peek() should return the first item in the queue (Qiang)
- Enh #629: Added support for specifying shell command search path via an environment variable YIIC_SHELL_COMMAND_PATH (Qiang)
- Enh #643: Enhanced CAccessControlFilter::expression, COutputCache::varyByExpression and CExpressionDependency::expression so that they can use PHP callback (Qiang)
- Enh #665: Added support for using CStarRating to collect tabular input (Qiang)
- Enh #672: Added Italian translation of error views (Qiang)
- Enh #674: Improved CPgsqlSchema to support auto-incremental column in composite primary  key (Qiang)
- Enh #677: Improved CPgsqlColumnSchema to recognize more column data types (Qiang)
- Enh #679: Added support for parsing and creating URLs with parameterized hostnames (Qiang)
- Enh #684: Improved Yii::import() to throw exception when set_include_path fails (Qiang)
- Enh #685: Added support for recognizing "Z" in CDateFormatter (Qiang)
- Enh #690: Enhanced the email validator pattern to capture 99% valid email addresses (Qiang)
- Enh #694: CActiveRecord count methods will ignore criterias that are incomatible with COUNT SQL statement (Qiang)
- Enh #697: Relational AR queries now also invoke CActiveRecord::beforeFind() (Qiang)
- Enh #703: Upgraded autocomplete js code to version 1.1.0 (Qiang)
- Enh #715: CHtml::textArea and CHtml::activeTextArea should respect the 'encode' option (Qiang)
- Enh: Added core message translation in Thai (Peerajak)
- Enh: Allow CHtml::label() and CHtml::activeLabel() not to render the 'for' attribute when it is set false (Qiang)
- Chg #723: When merging a CDbCriteria with another, the latter's order clause will take precedence over the former (Qiang)
- New #709: Added core message translation in Bosnian language (kenci81)</pre>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 2.035 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/12/17/yii-version-1-0-11-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>התקנה ושימוש ב XDEBUG</title>
		<link>http://vadimg.com/2009/12/02/%d7%94%d7%aa%d7%a7%d7%a0%d7%94-%d7%95%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-xdebug/</link>
		<comments>http://vadimg.com/2009/12/02/%d7%94%d7%aa%d7%a7%d7%a0%d7%94-%d7%95%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-xdebug/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 09:25:29 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debugger]]></category>
		<category><![CDATA[xdebug]]></category>
		<category><![CDATA[דיבאג]]></category>
		<category><![CDATA[דיבאגר]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=495</guid>
		<description><![CDATA[נכון להיום רוב הבעיות של מתכנתי ה PHP והמערכות אותם הם כותבים היא החוסר בבדיקה שנעשית על גביהם. Xdebug  הינו תוסף ל PHP אשר נוצר על ידי Derick Rethans, אחד מהמהנדסים אשר בעצם כותבים את הליבה של שפת ה PHP. בפוסט הזה נסביר בקצרה כיצד להתקין את ה xdebug על גבי השרת ונציג כמה מהדברים [...]]]></description>
			<content:encoded><![CDATA[<p>נכון להיום רוב הבעיות של מתכנתי ה PHP והמערכות אותם הם כותבים היא החוסר בבדיקה שנעשית על גביהם. Xdebug  הינו תוסף ל PHP אשר נוצר על ידי Derick Rethans, אחד מהמהנדסים אשר בעצם כותבים את הליבה של שפת ה PHP. בפוסט הזה נסביר בקצרה כיצד להתקין את ה xdebug על גבי השרת ונציג כמה מהדברים האפשרויות הבסיסיות בתוסף זה.<br />
xdebug מאפשר (בין היתר) בעיקר מעקב אחר קוד ה PHP, פרופילינג (שזה בעצם גילוי של צווארי בקבוק), דיבאגינג.</p>
<p><span id="more-495"></span></p>
<p>בעת כתיבת המדריך הזה כל הדוגמאות שהוצגו נעשו על גבי PHP 5.3 ושרת APACHE 2.2.11</p>
<p>ראשית יהיה עליכם להוריד את הגרסא העדכנית ביותר של xdebug (<a href="http://xdebug.org/download.php" target="_blank">לחצו כאן למעבר לעמוד ההורדה</a>)</p>
<p>בהתאם לגרסאת ה PHP שלכם אתם תצטרכו להוריד את הקובץ המתאים. מאחר ואני משתמש ב 5.3 הורדתי את הגרסא של xdebug 2.0.5 את ה 5.3VC6-32BIT</p>
<p>במידה והינכם משתמשים ב 64BIT יש להוריד את 5.3VC6-64BIT . לכל אלו שעדיין משתמשים ב 5.2 אז יש להוריד את ה 5.2VC6 בהתאם.</p>
<p>*בנוגע ל VCx בסוף, זה בסך הכל אומר באיזה גרסא של visual C הקובץ קומפל.</p>
<p>**ישנם גם שני גרסאות ה NTS והללא, זאת אומרת במידה וה Zend Thread Safe היה פעיל או כבוי בזמן הקומפילציה של התוסף.</p>
<p>*** בגרסאות מתחת ל PHP 5.3 יש לבדוק מה הההגדרה של ה ZTS בשרת שלכם, גרסאות PHP 5.3 ומעלה יש לבחור את האפשרות ללא ה NTS.</p>
<p>לאחר שהורדתם את התוסף יש להוסיף אותו לתיקית ה ext של PHP, לצורך הדוגמא הנתיב ל PHP שלי הוא C:\wamp\bin\php\php5.3.0\ext אז יש לבחור את הנתיב המתאים שלכם ולהוסיף את הקובץ לנתיב זה.</p>
<p>לאחר מכן יש לערוך את קובץ ה PHP.INI בדרך כלל הוא יהיה בתיקיה אחת מעל לתיקיה של ה ext, לצורך הדוגמא הקובץ שלי נמצא ב C:\wamp\bin\apache\Apache2.2.11\bin/php.ini אבל הנתיב יכול להשתנות בהתאם להתקנה שלכם.</p>
<p>לערך שפתחתם את הקובץ גללו עד לסוף הקובץ והוסיפו את השורות הבאות:</p>
<p>גרסאות מתחת ל 5.3</p>
<pre class="brush: php">
[xdebug]
zend_extension_ts=&quot;&lt;FILE_NAME&gt;&quot;
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir=&quot;C:\tmp&quot;
</pre>
<p>גרסאות 5.3 ומעלה</p>
<pre class="brush: php">
[xdebug]
zend_extension=&quot;&lt;FILE_NAME&gt;&quot;
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=0
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir=&quot;C:\tmp&quot;
</pre>
<p>ההגדרות למעלה הם הגדרות שאני אישית עובד אתם, ניתן לערוך אותם בהתאם לצרכים האישיים שלכם, לרשימת הגדרות מלאה ניתן לבקר בעמוד הבא: <a href="http://xdebug.org/docs/all_settings" target="_blank">לחץ כאן</a></p>
<p>בנוסף יש להחליף את הערך של &lt;FILE_NAME&gt; בשם המלא של הקובץ שהורדם כולל הנתיב והסיומת.</p>
<p>לאחר כדי לבדוק אם התוסף הותקן בהצלחה יש לפתוח קובץ PHP חדש ולהזין לתוכו את הקוד הבא:</p>
<pre class="brush: php">
&lt;?php
phpinfo();
</pre>
<p>יש לחפש אחר התמונה הבאה כפי שהיא מוצגת:</p>
<p style="text-align: center;"><a href="http://www.vadimg.com/wp-content/uploads/2009/12/phpinfo.jpg" rel="lightbox[495]"><img class="aligncenter size-full wp-image-496" style="border: 0pt none;" title="phpinfo" src="http://www.vadimg.com/wp-content/uploads/2009/12/phpinfo.jpg" alt="phpinfo" width="606" height="83" /></a></p>
<p>יש לשים לב לשורה האחרונה במידה והיא קיימת הכל הותקן ואמור לעבוד.</p>
<p>עכשיו בכל פעם שתוצג שגיאה של PHP כלשהי ה XDEBUG יכנס לפעולה ויציג שגיאה בפורמט הזה:</p>
<p style="text-align: center;"><a href="http://www.vadimg.com/wp-content/uploads/2009/12/Untitled.jpg" rel="lightbox[495]"><img class="aligncenter size-full wp-image-497" style="border: 0pt none;" title="Untitled" src="http://www.vadimg.com/wp-content/uploads/2009/12/Untitled.jpg" alt="Untitled" width="737" height="147" /></a></p>
<p>ככה תקבלו יותר מידע לגבי השגיאה ואיך לטפל בה. כמובן זה רק חלק מאחד ממה שאפשר לעשות עם ה xdebug.</p>
<p>כמו כן ניתן להגדיר אותו לעבוד מול שרת ישירות על ידי שינוי הערכים המוגדרים למעלה.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/09/28/mongodb-%d7%97%d7%9c%d7%a7-2-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%94%d7%aa%d7%95%d7%a1%d7%a3-%d7%a2%d7%91%d7%95%d7%a8-php/" rel="bookmark" title="09/28/2010">MongoDB &#8211; חלק 2 &#8211; התקנת התוסף עבור PHP</a> &#8211; 09/28/2010</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/" rel="bookmark" title="08/13/2009">PHP Job Position &#8211; Center Tel-Aviv, Israel</a> &#8211; 08/13/2009</li>
<li><a href="http://vadimg.com/2009/12/17/creating-a-yii-widget-for-fckeditor-easier-usage/" rel="bookmark" title="12/17/2009">Creating a Yii widget for FCKeditor easier usage</a> &#8211; 12/17/2009</li>
</ul>
<p><!-- Similar Posts took 6.751 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/12/02/%d7%94%d7%aa%d7%a7%d7%a0%d7%94-%d7%95%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-xdebug/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Difference Between isset empty is null</title>
		<link>http://vadimg.com/2009/11/10/difference-between-isset-empty-is-null/</link>
		<comments>http://vadimg.com/2009/11/10/difference-between-isset-empty-is-null/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 11:38:30 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=487</guid>
		<description><![CDATA[Quite often in code reviews I have come across code that checks for empty or null values, or if a variable is set. Many of these checks fail as the wrong function is being used to assert the correct value. While it is important to be checking values, it is equally important to understand the [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction: ltr;">
<p>Quite often in code reviews I have come across code that checks for empty or null values, or if a variable is set. Many of these checks fail as the wrong function is being used to assert the correct value. While it is important to be checking values, it is equally important to understand the difference between the different methods of checking and testing values for empty, null, or if they are set.
</p>
<p><span id="more-487"></span></p>
<p>
Most common is the incorrect use of isset() and empty(). Many times these are seen to be used interchangeably, where the reality is, that the two are complete opposites. Lets look at some code.
</p>
<pre class="brush: php">
&lt;?php

        var_dump( !isset( $var ) );

        var_dump( empty( $var ) );
?&gt;
</pre>
<p>
The above snippet tests for not isset and empty for a variable which has not been set. The results both return true.
</p>
<pre class="brush: php">
bool(true)
bool(true)
</pre>
<p>
The correct method to check if a variable is set or not, is with the isset() function, or, if checking for an empty variable, then use empty(). These functions are provided for good reason, as seen in this code below.
</p>
<pre class="brush: php">
&lt;?php
        error_reporting(E_ALL);

        if( ! isset( $var ) )
        {
                echo &#039;Variable is not set&lt;br /&gt;&#039;;
        }

        if( empty( $var ) )
        {
                echo &#039;Variable is empty&lt;br /&gt;&#039;;
        }

        if( $var )
        {
                echo &#039;Variable is set&lt;br /&gt;&#039;;
        }
?&gt;
</pre>
<p>
The above snippet produces the following..
</p>
<div class="displaybox">
Variable is not set<br />
Variable is empty<br />
Notice: Undefined variable: var in /html/test.php on line 15
</div>
<p>
This shows why the use of if($var) type syntax is shunned by many programmers, as PHP throws an E_NOTICE error when it finds an uninitialized variable. Th checks for isset and empty declare the variable is not set, and that it is empty?? Which is it? The Empty function would have us believe the variable is set, but the value is empty, but this is not the case, the variable is clearly undefined, and the third test which gives and error supports this. Confused?
</p>
<p>To make matters just a little more complex, the empty function will also return true, if the variable has a value of zero. Lets take it for a drive.
</p>
<pre class="brush: php">
&lt;?php
        /*** turn on error reporting ***/
        error_reporting(E_ALL);

        /*** set variable to zero ***/
        $var = 0;
        if( isset( $var ) )
        {
                echo &#039;Variable is set&lt;br /&gt;&#039;;
        }

        if( empty( $var ) )
        {
                echo &#039;Variable is empty&lt;br /&gt;&#039;;
        }

        if( $var )
        {
                echo &#039;Variable is set&lt;br /&gt;&#039;;
        }
?&gt;
</pre>
<p>
Running this test, provides some more clues to the behavior mentioned earlier. The response is:</p>
<p><div class="displaybox">
Variable is set<br />
Variable is empty
</div>
<p>
At the top of the script, the variable is clearly set to zero, and a check with isset asserts this. However, the next check with the empty function shows the variable to be empty, even though a value for it has been set. Then the final check with if( $var ) does not show the text for the same reason empty shows the variable to be empty. </p>
<p><p>
To get a better understanding of this seemingly odd behavior lets make a quick test chart can be produced to check for values and the values each returns based on the function that is checking each of the values. The code for producing such a table is provided below, but, here is one we prepared earlier. The error message is produced because the isset() function is trying to check a variable that has not been initialized, as seen earlier in this article.
</p>
<div class="displaybox">
<table style="border: solid 1px black; width:100%;">
<tr style="text-align:left;">
<th>TEST</th>
<th>Not Set</th>
<th>NULL</th>
<th>Zero</th>
<th>FALSE</th>
<th>Numeric Value</th>
<th>Empty String</th>
</tr>
<tfoot>
<tr>
<td colspan="6">Comparison Table</td>
</tr>
</tfoot>
<tbody>
</p>
<tr>
<td>isset()</td>
<td>bool(false)
</td>
<td>bool(false)
</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
</tr>
<tr>
<td>empty()</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(false)
</td>
<td>bool(true)
</td>
</tr>
<tr>
<td>is_null()</td>
<td>bool(true)</p>
</td>
<td>bool(true)</p>
</td>
<td>bool(false)
</td>
<td>bool(false)
</td>
<td>bool(false)
</td>
<td>bool(false)
</td>
</tr>
<tr>
<td>==</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(true)
</td>
<td>bool(false)
</td>
<td>bool(true)
</td>
</tr>
<tr>
<td>===</td>
<td>bool(false)
</td>
<td>bool(false)
</td>
<td>bool(false)
</td>
<td>bool(true)</p>
</td>
<td>bool(false)</p>
</td>
<td>bool(false)
</td>
</tr>
</tbody>
</table>
</div>
<p></p>
<h2>The Comparison Table Code</h2>
<pre class="brush: php">
&lt;table style=&quot;border: solid 1px black; width:100%;&quot;&gt;
&lt;tr style=&quot;text-align:left;&quot;&gt;&lt;th&gt;TEST&lt;/th&gt;&lt;th&gt;Not Set&lt;/th&gt;&lt;th&gt;NULL&lt;/th&gt;&lt;th&gt;Zero&lt;/th&gt;&lt;th&gt;FALSE&lt;/th&gt;&lt;th&gt;Numeric Value&lt;/th&gt;&lt;th&gt;Empty String&lt;/th&gt;&lt;/tr&gt;
&lt;tfoot&gt;&lt;tr&gt;&lt;td colspan=&quot;6&quot;&gt;Comparison Table&lt;/td&gt;&lt;/tr&gt;&lt;/tfoot&gt;
&lt;tbody&gt;
&lt;?php
    /*** turn on error reporting ***/
    error_reporting( E_ALL );

    /*** an array of test values ***/
    $values = array( $var, null, 0, false, 100, &#039;&#039;);
    echo &#039;&lt;tr&gt;&#039;;
    echo &#039;&lt;td&gt;isset()&lt;/td&gt;&#039;;
    foreach( $values as $val )
    {
        echo &#039;&lt;td&gt;&#039;;
        var_dump( isset( $val ) );
        echo &#039;&lt;/td&gt;&#039;;
    }
    echo &#039;&lt;/tr&gt;&#039;;

        echo &#039;&lt;tr&gt;&#039;;
    echo &#039;&lt;td&gt;empty()&lt;/td&gt;&#039;;
        foreach( $values as $val )
        {
                echo &#039;&lt;td&gt;&#039;;
                var_dump( empty( $val ) );
                echo &#039;&lt;/td&gt;&#039;;
        }
    echo &#039;&lt;/tr&gt;&#039;;

        echo &#039;&lt;tr&gt;&#039;;
        echo &#039;&lt;td&gt;is_null()&lt;/td&gt;&#039;;
        foreach( $values as $val )
        {
                echo &#039;&lt;td&gt;&#039;;
                var_dump( is_null( $val ) );
                echo &#039;&lt;/td&gt;&#039;;
        }
        echo &#039;&lt;/tr&gt;&#039;;

        echo &#039;&lt;tr&gt;&#039;;
    echo &#039;&lt;td&gt;==&lt;/td&gt;&#039;;
        foreach( $values as $val )
        {
                echo &#039;&lt;td&gt;&#039;;
                var_dump( $val == false  );
                echo &#039;&lt;/td&gt;&#039;;
        }
    echo &#039;&lt;/tr&gt;&#039;;

        echo &#039;&lt;tr&gt;&#039;;
    echo &#039;&lt;td&gt;===&lt;/td&gt;&#039;;
        foreach( $values as $val )
        {
                echo &#039;&lt;td&gt;&#039;;
                var_dump( $val === false );
                echo &#039;&lt;/td&gt;&#039;;
        }
        echo &#039;&lt;/tr&gt;&#039;;
?&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</pre>
<p>
<i>Origanlly posted by: <a href='http://www.phpro.org/articles/Difference-Between-isset-empty-is-null.html' target="_blank">phpro.org</a></i>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 2.032 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/11/10/difference-between-isset-empty-is-null/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exceptional PHP: Introduction to Exceptions</title>
		<link>http://vadimg.com/2009/10/29/exceptional-php-introduction-to-exceptions/</link>
		<comments>http://vadimg.com/2009/10/29/exceptional-php-introduction-to-exceptions/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 11:27:08 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[exceptional]]></category>
		<category><![CDATA[exceptions]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=480</guid>
		<description><![CDATA[Exceptions make it easy to interrupt program flow in the event that something goes wrong. They allow you to customize how a program handles errors, and gracefully degrades an application. This week, we will discuss various exception handling techniques, and today we will discuss the basic dos and don&#8217;ts for exceptions. First, what is an [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction: ltr;">
<p>Exceptions make it easy to interrupt program flow in the event that something goes wrong. They allow you to customize how a program handles errors, and gracefully degrades an application. This week, we will discuss various exception handling techniques, and today we will discuss the basic dos and don&#8217;ts for exceptions.</p>
<p>First, what is an exception? An exception is an object that is &#8220;thrown&#8221; by your application. When an exception is thrown, it halts processing until the exception is either caught, or left <a href="http://en.wikipedia.org/wiki/Exception_handling">unhandled</a>. To throw an exception, you use the following syntax:</p>
<p><span id="more-480"></span></p>
<pre class="brush: php">
&lt;?php

throw new Exception(&#039;my exception message&#039;);
</pre>
<p>There are a couple of things at work here: first, we are using the &#8220;new Exception&#8221; syntax to instantiate a new instance of the built-in Exception class. Second, we are using a special keyword in PHP called &#8220;throw&#8221; which allows for an exception to be placed onto the stack.</p>
<p>If left like this, the exception thrown above will bubble up and cause processing to halt at the point when the exception is raised. This is typical error behavior, but what makes exceptions special (and useful) is the ability to &#8220;catch&#8221; them.</p>
<pre class="brush: php">
&lt;?php
try {

throw new Exception(&#039;my exception message&#039;);
}
catch (Exception $e)
{
// do some sort of error handling here
}
</pre>
<p>Catching exceptions allows us to try and recover from the error, or allow our application to degrade gracefully. In production, unhandled exceptions will cause the page to stop loading (or not load at all), but handled exceptions allow you the ability to redirect a user to an error page or do other error handling.</p>
<p>That is the basic syntax for using exceptions. But when should you use them and under what conditions? Here are some tips for making proper use of exceptions:</p>
<p><strong>Exceptions are a part of object-oriented programming.</strong><br />
This may well be the most controversial point of this blog entry, but objects are really best used and should mostly be used with <a href="http://en.wikipedia.org/wiki/Object-oriented_programming">object-oriented programming</a>. The exception itself is an object. PHP offers a number of <a href="http://php.net/manual/en/function.trigger-error.php">error raising options</a> that I recommend for use in procedural code, but exceptions should mostly be used with objects.</p>
<p><strong>Extending exceptions is cool and encouraged.</strong><br />
As a developer you are allowed and encouraged to <a href="http://www.php.net/manual/en/language.exceptions.extending.php">extend the base exception class</a> on your own to create custom exceptions. These custom exceptions need not implement any custom methods; instead, you can use them to raise exceptions in different parts of your application. For example, you can raise a custom DatabaseException in the database class while raising a custom ActionException when actions are performed.</p>
<p>Exceptions can be extended like any other class:</p>
<pre class="brush: php">

class CustomException extends Exception {}
</pre>
<p>We can then throw CustomException. You can even further extend CustomException (for example if you want to implement certain custom methods and then have other exceptions use those methods). Note that in order to throw something it must extend the base Exception class; otherwise PHP will not allow it to be thrown.</p>
<p><strong>Be sure that your exceptions honor layer abstraction.</strong></p>
<p>One of the more complicated things about handling exceptions is that you want to honor <a href="http://en.wikipedia.org/wiki/Principle_of_abstraction">layer abstraction</a> when throwing and catching exceptions.</p>
<p>For example, let&#8217;s say that <a href="http://php.net/manual/en/book.pdo.php">PDO</a> raises an exception due to a unique key constraint in the database. Unhandled, it will bubble up to the top. If the PDO exception was caused by something in your Controller, allowing the PDO exception to bubble up would be a violation of layer abstraction.</p>
<p>A better choice would be to catch the PDO exception and wrap it in a Controller exception. For example:</p>
<pre class="brush: php">
&lt;?php

try {
// some PDO action here
}
catch(PDOException $pdoE)
{
throw new ControllerException(&#039;There was an error: &#039; . $pdoE-&gt;getMessage() );
}
</pre>
<p>When the exception bubbles up, the PDO exception will have been handled, but the message will be included in a ControllerException. This is an acceptable way to handle exceptions that honors the principle of layer abstraction.</p>
<p><strong>Don&#8217;t use exceptions to manage normal program flow.</strong><br />
There&#8217;s a temptation to use exceptions to manage program flow. Take the following source code for example:</p>
<pre class="brush: php">
&lt;?php

try {

if($var == $condition)
{
throw new TypeA();
}
else
{
throw new TypeB();
}

} catch (TypeA $e) {

} catch (TypeB $e) {

}
</pre>
<p><a href="http://blueparabola.com/blog/exceptional-situations-require-exceptional-measures">Exceptions are designed to be used for exceptional situations.</a> Exceptional situations are situations in which the normal flow would result in an error or other detrimental behavior; exceptions are designed to reduce the detrimental result.</p>
<p>In this case, the exceptions are being thrown purely to control what information is executed. There is clearly no normal operation of this code without the exceptions, as an exception is going to be raised no matter the value you pass to the if-else block.</p>
<p>A good rule of thumb is that if you cannot remove the thrown exceptions from your application and still have it complete successfully (given the right information), you&#8217;ve incorrectly used exceptions.</p>
<p><strong>Exceptions are meant to be handled.</strong><br />
The very existence of the try-catch loop indicates that exceptions are meant to be handled. They are meant to be resolved, even if that resolution is to rethrow the exception after doing some sort of error handling.</p>
<p>With errors, fatal or otherwise, there&#8217;s the possibility that something was completed half-way. Exceptions help eliminate this possibility by halting processing long enough for you to clean up before terminating the application. For example, with exceptions you can effectively utilize <a href="http://en.wikipedia.org/wiki/Database_transaction">transactions</a> &#8211; if an exception is raised, it can be caught, a rollback can be performed and the exception can be rethrown.</p>
<p>It&#8217;s a best practice to try and handle as many exceptions as possible, rather than leaving them to bubble up, as it enhances user experience and reduces the likelihood that they will break your application in some way (by half writing a file, for example).</p>
<p><strong>Exceptions are not meant to be silenced.</strong><br />
Occasionally I run across code that does this:</p>
<pre class="brush: php">
&lt;?php

function myFunction()
{
try {
// do something that raises an exception
}
catch (Exception $e) {}
}
</pre>
<p>The end result here will be that the exception is silenced. The application will not be halted, and there is no error handling in the catch block; the exception simply disappears. This means there is no reason for the exception to be raised in the first place since it won&#8217;t be heeded by the developer!</p>
<p>Most of the time that I see this is when PHP itself raises some sort of exception (meaning the developer can&#8217;t remove the exception from possibility, and thus just mitigates it). Struggle against the urge to do this. PHP&#8217;s classes throw exceptions because there is a problem, and frameworks do the same. Handle those exceptions; don&#8217;t just silence them.</p>
<p>The only time it is appropriate to silence an exception is if it has been completely handled and there are no further issues related to that exception. For example, if an exception is raised by a file writing class because the file doesn&#8217;t exist and in your catch block you create the file, silence the exception. But don&#8217;t silence exceptions simply because they&#8217;re inconvenient.</p>
<p><strong>Go from more specific to less when trapping exceptions</strong><br />
What happens if you have the following code?</p>
<pre class="brush: php">

class ExceptionA extends Exception {}
class ExceptionB extends ExceptionA {}

try {

throw new ExceptionB();

} catch (ExceptionB $e) {

} catch (ExceptionA $e) {

} catch (Exception) {

}
</pre>
<p>The correct answer is that the very first catch block (the block that catches ExceptionB) will handle the exception. This will happen despite the fact that ExceptionB is a child of ExceptionA and Exception. This is because PHP will execute the first catch block that meets the requirements. This is useful for situations in which you might have multiple different types of exceptions raised, and want to handle them differently.</p>
<p><strong>Use exception codes to differentiate between exceptions</strong><br />
All exceptions in PHP take an optional second argument of an exception code. This code can be used to determine what kind of exception you have.</p>
<pre class="brush: php">

$randomException = new Exception(&#039;message&#039;);
$specificException = new Exception(&#039;message&#039;, 123);
</pre>
<p>The first exception looks like every other exception raised. However, the second exception has a code &#8211; which you can use to differentiate it from other types of exceptions of the same type. This is useful in the event that you have database exceptions, one of which is for a failed connection and another is for a unique key violation; you can therefore tell the user what exactly went wrong.</p>
<p><strong>Summary</strong><br />
For those who have not used exceptions, this should provide a fairly basic introduction to their use and management. On Wednesday, we&#8217;ll talk about writing your own exceptions.</p>
<p><em>Originally posted on <a href="http://www.brandonsavage.net/">BrandonSavage.net</a>.</em></p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
<li><a href="http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/" rel="bookmark" title="11/17/2010">PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</a> &#8211; 11/17/2010</li>
<li><a href="http://vadimg.com/2012/03/31/usps-php-api-usage-examples/" rel="bookmark" title="03/31/2012">USPS PHP API &#8211; Usage Examples</a> &#8211; 03/31/2012</li>
</ul>
<p><!-- Similar Posts took 7.286 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/10/29/exceptional-php-introduction-to-exceptions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>צפייה באתר תחת SSL &#8211; להכריח את המשתמש &#8211; Apache Mod Rewrite</title>
		<link>http://vadimg.com/2009/09/24/%d7%a6%d7%a4%d7%99%d7%99%d7%94-%d7%91%d7%90%d7%aa%d7%a8-%d7%aa%d7%97%d7%aa-ssl-%d7%9c%d7%94%d7%9b%d7%a8%d7%99%d7%97-%d7%90%d7%aa-%d7%94%d7%9e%d7%a9%d7%aa%d7%9e%d7%a9-apache-mod-rewrite/</link>
		<comments>http://vadimg.com/2009/09/24/%d7%a6%d7%a4%d7%99%d7%99%d7%94-%d7%91%d7%90%d7%aa%d7%a8-%d7%aa%d7%97%d7%aa-ssl-%d7%9c%d7%94%d7%9b%d7%a8%d7%99%d7%97-%d7%90%d7%aa-%d7%94%d7%9e%d7%a9%d7%aa%d7%9e%d7%a9-apache-mod-rewrite/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 13:05:50 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[אופטימיזציה]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[גלישה בטוחה]]></category>
		<category><![CDATA[גלישה מאובטחת]]></category>
		<category><![CDATA[גלישה מאובטחת באתר]]></category>
		<category><![CDATA[צפייה בטוחה]]></category>
		<category><![CDATA[צפייה בטוחה באתר]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=477</guid>
		<description><![CDATA[לפעמים אתה צריך לוודא שהמשתמש צופה באתר תחת SSL ישנה דרך פשוטה לבצע פעולה זו על ידי הכרחת המשתמש לצפות באתר תחת הקידומת HTTPS ולא HTTP בכדי לבצע זאת כל מה שליכם לעשות הוא להוסיף את השורות הבאות לקובץ ה .htaccess בשרת: RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] קובץ ה .htaccess חייב [...]]]></description>
			<content:encoded><![CDATA[<p>לפעמים אתה צריך לוודא שהמשתמש צופה באתר תחת SSL<br />
 ישנה דרך פשוטה לבצע פעולה זו על ידי הכרחת המשתמש לצפות באתר תחת הקידומת HTTPS ולא HTTP בכדי לבצע זאת כל מה שליכם לעשות הוא להוסיף את השורות הבאות לקובץ ה .htaccess בשרת:</p>
<p><span id="more-477"></span></p>
<pre class="brush: php">
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
</pre>
<p>קובץ ה .htaccess חייב להיות בתיקיה הראשית של האתר</p>
<p>במידה ותרצו להכריח את ה SSL תחת תיקיה מסויימת ניתן לבצע:</p>
<pre class="brush: php">
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} somefolder
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]
</pre>
<p>קובץ ה .htaccess הזה יהיה צריך להיות ממוקם תחת התיקיה בה תרצו להכריח SSL</p>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/09/24/apache-rewrite-rules-http-to-https-force-ssl/" rel="bookmark" title="09/24/2009">Apache rewrite rules &#8211; Http to Https &#8211; Force SSL</a> &#8211; 09/24/2009</li>
</ul>
<p><!-- Similar Posts took 2.855 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/09/24/%d7%a6%d7%a4%d7%99%d7%99%d7%94-%d7%91%d7%90%d7%aa%d7%a8-%d7%aa%d7%97%d7%aa-ssl-%d7%9c%d7%94%d7%9b%d7%a8%d7%99%d7%97-%d7%90%d7%aa-%d7%94%d7%9e%d7%a9%d7%aa%d7%9e%d7%a9-apache-mod-rewrite/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Apache rewrite rules &#8211; Http to Https &#8211; Force SSL</title>
		<link>http://vadimg.com/2009/09/24/apache-rewrite-rules-http-to-https-force-ssl/</link>
		<comments>http://vadimg.com/2009/09/24/apache-rewrite-rules-http-to-https-force-ssl/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 12:59:20 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[אופטימיזציה]]></category>
		<category><![CDATA[force]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[rules]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=473</guid>
		<description><![CDATA[Apache rewrite rules - Http to Https - Force SSL]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction: ltr;">
<p>Sometimes you may need to make sure that the user is browsing your site over securte connection.<br />
An easy to way to always redirect the user to secure connection (https://) can be accomplished with a .htaccess file containing the following lines:</p>
<p><span id="more-473"></span></p>
<pre class="brush: php">
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
</pre>
<p>Please, note that the .htaccess should be located in the web site main folder.</p>
<p>In case you wish to force HTTPS for a particular folder you can use:</p>
<pre class="brush: php">
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} somefolder
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L]
</pre>
<p>The .htaccess file should be placed in the folder where you need to force HTTPS.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/09/24/%d7%a6%d7%a4%d7%99%d7%99%d7%94-%d7%91%d7%90%d7%aa%d7%a8-%d7%aa%d7%97%d7%aa-ssl-%d7%9c%d7%94%d7%9b%d7%a8%d7%99%d7%97-%d7%90%d7%aa-%d7%94%d7%9e%d7%a9%d7%aa%d7%9e%d7%a9-apache-mod-rewrite/" rel="bookmark" title="09/24/2009">צפייה באתר תחת SSL &#8211; להכריח את המשתמש &#8211; Apache Mod Rewrite</a> &#8211; 09/24/2009</li>
<li><a href="http://vadimg.com/2009/08/05/mod_rewrite-tips-and-tricks-are-lot-of-htaccess-rewrite-examples/" rel="bookmark" title="08/05/2009">Mod_Rewrite Tips and Tricks are lot of .htaccess rewrite examples</a> &#8211; 08/05/2009</li>
<li><a href="http://vadimg.com/2009/07/28/speed-up-a-web-site-by-enabling-apache-file-compression/" rel="bookmark" title="07/28/2009">Speed up a web site by enabling Apache file compression</a> &#8211; 07/28/2009</li>
</ul>
<p><!-- Similar Posts took 4.537 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/09/24/apache-rewrite-rules-http-to-https-force-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>קבלת עומס השרת כרגע &#8211; SERVER LOAD</title>
		<link>http://vadimg.com/2009/09/24/%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%95%d7%9e%d7%a1-%d7%94%d7%a9%d7%a8%d7%aa-%d7%9b%d7%a8%d7%92%d7%a2-server-load/</link>
		<comments>http://vadimg.com/2009/09/24/%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%95%d7%9e%d7%a1-%d7%94%d7%a9%d7%a8%d7%aa-%d7%9b%d7%a8%d7%92%d7%a2-server-load/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 07:36:23 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[זמן טעינה]]></category>
		<category><![CDATA[זמן טעינת שרת]]></category>
		<category><![CDATA[זמן שרת]]></category>
		<category><![CDATA[עומס]]></category>
		<category><![CDATA[עומס שרת]]></category>
		<category><![CDATA[שרת]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=469</guid>
		<description><![CDATA[פונקציה אשר מחזירה את זמן טעינת השרת SERVER LOAD תומכת ברוב מערכות ההפעלה כיום. &#60;?php /** * Retrieve server load * * NOTE: You should cache the value returned to perform the check every X sec/min * To reduce the page load time. * * @return string Server load */ function getServerLoad() { $load_limit = [...]]]></description>
			<content:encoded><![CDATA[<p>פונקציה אשר מחזירה את זמן טעינת השרת SERVER LOAD תומכת ברוב מערכות ההפעלה כיום.</p>
<p><span id="more-469"></span></p>
<pre class="brush: php">
&lt;?php

/**
 * Retrieve server load
 *
 * NOTE: You should cache the value returned to perform the check every X sec/min
 * To reduce the page load time.
 *
 * @return	string	Server load
 */
function getServerLoad()
{
	$load_limit			= &quot;&quot;;

	// Get the server load if loadavg avilable
	if ( @file_exists(&#039;/proc/loadavg&#039;) )
	{
		if ( $fh = @fopen( &#039;/proc/loadavg&#039;, &#039;r&#039; ) )
		{
			$data = @fread( $fh, 6 );

			@fclose( $fh );

			$load_avg	= explode( &quot; &quot;, $data );
			$load_limit	= trim($load_avg[0]);
		}
	}
	else if( strpos( strtolower( PHP_OS ), &#039;win&#039; ) === 0 )
	{
		/*---------------------------------------------------------------
		| typeperf is an exe program that is included with Win NT,
		|	XP Pro, and 2K3 Server.  It can be installed on 2K from the
		|	2K Resource kit.  It will return the real time processor
		|	Percentage, but will take 1 second processing time to do so.
		|	This is why we shall cache it, and check only every 2 mins.
		|
		|	Can also be obtained from COM, but it&#039;s extremely slow...
		---------------------------------------------------------------*/

		$serverstats = @shell_exec(&quot;typeperf \&quot;Processor(_Total)\% Processor Time\&quot; -sc 1&quot;);

		if( $serverstats )
		{
			$server_reply	= explode( &quot;\n&quot;, str_replace( &quot;\r&quot;, &quot;&quot;, $serverstats ) );
			$serverstats	= array_slice( $server_reply, 2, 1 );
			$statline		= explode( &quot;,&quot;, str_replace( &#039;&quot;&#039;, &#039;&#039;, $serverstats[0] ) );
			$load_limit		= round( $statline[1], 4 );
		}
	}
	else
	{
		if ( $serverstats = @exec(&quot;uptime&quot;) )
		{
			preg_match( &quot;/(?:averages)?\: ([0-9\.]+)(,|)[\s]+([0-9\.]+)(,|)[\s]+([0-9\.]+)/&quot;, $serverstats, $load );

			$load_limit = $load[1];
		}
	}

	return $load_limit;
}

?&gt;
</pre>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/02/24/zend-server-%d7%a1%d7%91%d7%99%d7%91%d7%aa-%d7%a4%d7%99%d7%aa%d7%95%d7%97-%d7%95%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-php-%d7%91%d7%9b%d7%9e%d7%94-%d7%93%d7%a7%d7%95%d7%aa/" rel="bookmark" title="02/24/2009">Zend Server &#8211; סביבת פיתוח ועבודה עם PHP בכמה דקות</a> &#8211; 02/24/2009</li>
<li><a href="http://vadimg.com/2009/02/05/%d7%aa%d7%97%d7%a1%d7%95%d7%9a-%d7%9c%d7%a2%d7%a6%d7%9e%d7%9a-%d7%96%d7%9e%d7%9f-cache-it/" rel="bookmark" title="02/05/2009">תחסוך לעצמך זמן, CACHE IT!</a> &#8211; 02/05/2009</li>
</ul>
<p><!-- Similar Posts took 3.511 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/09/24/%d7%a7%d7%91%d7%9c%d7%aa-%d7%a2%d7%95%d7%9e%d7%a1-%d7%94%d7%a9%d7%a8%d7%aa-%d7%9b%d7%a8%d7%92%d7%a2-server-load/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get server load time</title>
		<link>http://vadimg.com/2009/09/24/get-server-load-time/</link>
		<comments>http://vadimg.com/2009/09/24/get-server-load-time/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 07:32:34 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[get load]]></category>
		<category><![CDATA[get server]]></category>
		<category><![CDATA[get server load]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server load]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=462</guid>
		<description><![CDATA[This is a simple script that will display the server load time works on most OS &#60;?php /** * Retrieve server load * * NOTE: You should cache the value returned to perform the check every X sec/min * To reduce the page load time. * * @return string Server load */ function getServerLoad() { [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">
<p>This is a simple script that will display the server load time works on most OS</p>
<p><span id="more-462"></span></p>
<pre class="brush: php">
&lt;?php

/**
 * Retrieve server load
 *
 * NOTE: You should cache the value returned to perform the check every X sec/min
 * To reduce the page load time.
 *
 * @return	string	Server load
 */
function getServerLoad()
{
	$load_limit			= &quot;&quot;;

	// Get the server load if loadavg avilable
	if ( @file_exists(&#039;/proc/loadavg&#039;) )
	{
		if ( $fh = @fopen( &#039;/proc/loadavg&#039;, &#039;r&#039; ) )
		{
			$data = @fread( $fh, 6 );

			@fclose( $fh );

			$load_avg	= explode( &quot; &quot;, $data );
			$load_limit	= trim($load_avg[0]);
		}
	}
	else if( strpos( strtolower( PHP_OS ), &#039;win&#039; ) === 0 )
	{
		/*---------------------------------------------------------------
		| typeperf is an exe program that is included with Win NT,
		|	XP Pro, and 2K3 Server.  It can be installed on 2K from the
		|	2K Resource kit.  It will return the real time processor
		|	Percentage, but will take 1 second processing time to do so.
		|	This is why we shall cache it, and check only every 2 mins.
		|
		|	Can also be obtained from COM, but it&#039;s extremely slow...
		---------------------------------------------------------------*/

		$serverstats = @shell_exec(&quot;typeperf \&quot;Processor(_Total)\% Processor Time\&quot; -sc 1&quot;);

		if( $serverstats )
		{
			$server_reply	= explode( &quot;\n&quot;, str_replace( &quot;\r&quot;, &quot;&quot;, $serverstats ) );
			$serverstats	= array_slice( $server_reply, 2, 1 );
			$statline		= explode( &quot;,&quot;, str_replace( &#039;&quot;&#039;, &#039;&#039;, $serverstats[0] ) );
			$load_limit		= round( $statline[1], 4 );
		}
	}
	else
	{
		if ( $serverstats = @exec(&quot;uptime&quot;) )
		{
			preg_match( &quot;/(?:averages)?\: ([0-9\.]+)(,|)[\s]+([0-9\.]+)(,|)[\s]+([0-9\.]+)/&quot;, $serverstats, $load );

			$load_limit = $load[1];
		}
	}

	return $load_limit;
}

?&gt;
</pre>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.832 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/09/24/get-server-load-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPB SDK V3 FOR IPB 3</title>
		<link>http://vadimg.com/2009/08/25/ipb-sdk-v3-for-ipb-3/</link>
		<comments>http://vadimg.com/2009/08/25/ipb-sdk-v3-for-ipb-3/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 06:28:03 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[פורומים]]></category>
		<category><![CDATA[ipb]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=459</guid>
		<description><![CDATA[This is just an alpha version of the IPB SDK for IPB 3. Currently it supports: Here is a list of available functions. File Name: (IM) IPB SDK V3 File Submitter: Vince File Submitted: 29 Jul 2009 File Updated: 11 Aug 2009 File Category: IP.Board v3.0.x Mods Resource Type: Application Version: 3.0Alpha This is just [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction:ltr;">
<p>This is just an alpha version of the IPB SDK for IPB 3. Currently it supports:</p>
<p>Here is a list of available functions.</p>
<p><span id="more-459"></span></p>
<p><strong>File Name</strong>: (IM) IPB SDK V3<br />
<strong>File Submitter</strong>: <a href="http://www.invisionmodding.com/index.php?showuser=1203" target="_blank">Vince</a><br />
<strong>File Submitted</strong>: 29 Jul 2009<br />
<strong>File Updated</strong>: <em>11 Aug 2009</em><br />
<strong>File Category</strong>: <a href="http://www.invisionmodding.com/index.php?autocom=downloads&amp;showcat=29" target="_blank">IP.Board v3.0.x Mods</a><br />
<strong>Resource Type</strong>: Application<br />
<strong>Version</strong>: 3.0Alpha</p>
<p>This is just an alpha version of the IPB SDK for IPB 3. Currently it supports:</p>
<p>Here is a list of available functions.</p>
<p>Login &amp; Register:</p>
<p>* Authenticate the user &#8211; creates account if possible<br />
* Change a user&#8217;s email address<br />
* Change a login name/display name<br />
* Change a user&#8217;s password<br />
* Check login information to see if it&#8217;s valid<br />
* Create a user&#8217;s account<br />
* Delete a user&#8217;s cookies<br />
* Check if the email is already in use<br />
* Check to see if a member is logged in<br />
* Login a member without checking credentials<br />
* Delete members cookies set by the board And logout the member</p>
<p>Member, Group &amp; Access:</p>
<p>*  buildAvatar &#8211; Returns user&#8217;s avatar<br />
* Parse a member for display<br />
* Parse a member&#8217;s profile photo<br />
* Determine if two members are friends<br />
* Determine if a member is ignoring another member<br />
* Check forum permissions Forum perms can be: view read start reply upload download &#8211; by member<br />
* Cleans a username or display name, also checks for any errors<br />
* Check forum permissions &#8211; by group(s)<br />
* Delete personal photo function<br />
* Fetches SEO name, updating the table if required<br />
* Retrieve all IP addresses a user (or multiple users) have used<br />
* Create new member &#8211; extended<br />
* Generates a log in key<br />
* Generates a compiled passhash.<br />
* Generates a password salt.<br />
* Grab all hosted avatar gallery directories<br />
* Grab all images within a particular avatar gallery directory<br />
* Check to see if a member is banned (or not)<br />
* Load member information<br />
* Sends a query to the IPS Spam Service<br />
* Delete member(s)<br />
* Remove member&#8217;s avatar<br />
* Remove member uploaded photos<br />
* Save member information<br />
* Saves the member&#8217;s avatar<br />
* Set up defaults for a guest user<br />
* Updates member&#8217;s DB row password &#8211; extended<br />
* Upload personal photo function</p>
<p>Simple to use interface.</p>
<p>currently there is only one simple example, we will extend this within time.<br />
documentation and class reference available also.</p>
<p>Bug reporting and feature requests please refer to the bug tracker (link available at the top of the page).<br />
We will be updating it with new features and options within time.</p>
<p><a href="http://www.invisionmodding.com/index.php?autocom=downloads&amp;showfile=1381" target="_blank">Click here to download this file</a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/05/21/ipb-300-rc1-%d7%99%d7%99%d7%a9%d7%95%d7%a8-%d7%94%d7%a1%d7%a7%d7%99%d7%9f/" rel="bookmark" title="05/21/2009">IPB 3.0.0 RC1 &#8211; יישור הסקין</a> &#8211; 05/21/2009</li>
<li><a href="http://vadimg.com/2012/03/29/php-facebook-api-wrapper-updated-v-3-0-1/" rel="bookmark" title="03/29/2012">PHP Facebook API Wrapper Updated V 3.0.1</a> &#8211; 03/29/2012</li>
<li><a href="http://vadimg.com/2009/08/05/im-custom-navigation-1-0/" rel="bookmark" title="08/05/2009">(IM) Custom Navigation 1.0</a> &#8211; 08/05/2009</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
</ul>
<p><!-- Similar Posts took 6.022 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/25/ipb-sdk-v3-for-ipb-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Job Position &#8211; Center Tel-Aviv, Israel</title>
		<link>http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/</link>
		<comments>http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 09:56:03 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[jobs]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=457</guid>
		<description><![CDATA[PHP 5, OOP, ZEND/ Yii FRAMEWORK, EXPERIENCED DEVELOPER Webtarget Ltd. currently has an opening for a mid-level PHP Developer located in Tel-Aviv. You will be fluent in PHP including functional knowledge of classes, security and MCV standards. You will be joining an existing web team to provide support to existing projects, helping to maintain internal [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction: ltr;">PHP 5, OOP, ZEND/ Yii FRAMEWORK, EXPERIENCED DEVELOPER  Webtarget Ltd. currently has an opening for a mid-level PHP Developer located in Tel-Aviv.<br />
You will be fluent in PHP including functional knowledge of classes, security and MCV standards.<br />
You will be joining an existing web team to provide support to existing projects, helping to maintain internal CMS system as well as leading your own projects.<br />
As the deadlines are many and varied, you should have strong organizational and motivational skills.</div>
<div style="text-align:left; direction: ltr;"><span id="more-457"></span></div>
<div style="text-align:left; direction: ltr;">
<p><strong>Requirements.</strong></p>
<p>Advanced knowledge of PHP 5. IMPORTANT.<br />
Experience with Linux and Apache and MySQL.<br />
Experience with Zend Framework and/or Yii Framework Big plus.<br />
Love of open source development and standards based development.<br />
Internationalization (I18N/L10N) experience is a plus.<br />
Strong communication skills.<br />
Ability to understand and speak English.</p>
<p><strong>Contact</strong></p>
<p>Email: webtargetil@gmail.com</p></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/07/30/php-developer-job-position/" rel="bookmark" title="07/30/2009">PHP Developer job position</a> &#8211; 07/30/2009</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
<li><a href="http://vadimg.com/2009/02/03/%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-%d7%90%d7%95-%d7%94%d7%aa%d7%97%d7%9c%d7%94-%d7%97%d7%93%d7%a9%d7%94/" rel="bookmark" title="02/03/2009">עבודה עם פריימוורק או התחלה חדשה?</a> &#8211; 02/03/2009</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2009/08/06/custom-test-center/" rel="bookmark" title="08/06/2009">Custom Test Center</a> &#8211; 08/06/2009</li>
</ul>
<p><!-- Similar Posts took 6.739 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>בחינה חדשה בנושא מסדי נתונים MySQL 5</title>
		<link>http://vadimg.com/2009/08/10/%d7%91%d7%97%d7%99%d7%a0%d7%94-%d7%97%d7%93%d7%a9%d7%94-%d7%91%d7%a0%d7%95%d7%a9%d7%90-%d7%9e%d7%a1%d7%93%d7%99-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-mysql-5/</link>
		<comments>http://vadimg.com/2009/08/10/%d7%91%d7%97%d7%99%d7%a0%d7%94-%d7%97%d7%93%d7%a9%d7%94-%d7%91%d7%a0%d7%95%d7%a9%d7%90-%d7%9e%d7%a1%d7%93%d7%99-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-mysql-5/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 08:48:20 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[בחינה]]></category>
		<category><![CDATA[מבדק]]></category>
		<category><![CDATA[מבחן]]></category>
		<category><![CDATA[מסד]]></category>
		<category><![CDATA[מסד נתונים]]></category>
		<category><![CDATA[מסדי נתונים]]></category>
		<category><![CDATA[נתונים]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=453</guid>
		<description><![CDATA[נוספה בחינה חדשה במערכת הבחינות בנושא של מסדי נתונים MySQL 5 . בכדי לצפות בבחינה נא ללחוץ כאן.Similar Posts מסד נתונים &#8211; הגדרת סוגי שדות נכונים בהתאם לתוכן השדה &#8211; 02/19/2009]]></description>
			<content:encoded><![CDATA[<p>נוספה בחינה חדשה במערכת הבחינות בנושא של מסדי נתונים MySQL 5 . בכדי לצפות בבחינה נא <a href="http://www.vadimg.com/tester/" target="_blank">ללחוץ כאן</a>.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/02/19/%d7%9e%d7%a1%d7%93-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-%d7%94%d7%92%d7%93%d7%a8%d7%aa-%d7%a1%d7%95%d7%92%d7%99-%d7%a9%d7%93%d7%95%d7%aa-%d7%a0%d7%9b%d7%95%d7%a0%d7%99%d7%9d-%d7%91%d7%94%d7%aa%d7%90/" rel="bookmark" title="02/19/2009">מסד נתונים &#8211; הגדרת סוגי שדות נכונים בהתאם לתוכן השדה</a> &#8211; 02/19/2009</li>
</ul>
<p><!-- Similar Posts took 2.698 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/10/%d7%91%d7%97%d7%99%d7%a0%d7%94-%d7%97%d7%93%d7%a9%d7%94-%d7%91%d7%a0%d7%95%d7%a9%d7%90-%d7%9e%d7%a1%d7%93%d7%99-%d7%a0%d7%aa%d7%95%d7%a0%d7%99%d7%9d-mysql-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Mysql 5 Test / Exam</title>
		<link>http://vadimg.com/2009/08/10/new-mysql-5-test-exam/</link>
		<comments>http://vadimg.com/2009/08/10/new-mysql-5-test-exam/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 08:46:00 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[exams]]></category>
		<category><![CDATA[mysql 5]]></category>
		<category><![CDATA[tester]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=450</guid>
		<description><![CDATA[We have added a new test to our testing system for MySQL 5. You can check it out at our testing center. Visit the test center at This Link Similar Posts MySQL Data Types Quick Reference Table: MySQL Version 5.0 &#8211; 07/30/2009 Yiiframework.co.il Code is now open sourced &#8211; 03/31/2011 Difference Between InnoDB and MyISAM [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction: ltr;">
<p>We have added a new test to our testing system for MySQL 5. You can check it out at our testing center.</p>
<p>Visit the test center at <a href="http://www.vadimg.com/tester/" target="_blank">This Link</a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/07/30/mysql-data-types-quick-reference-table-mysql-version-5-0/" rel="bookmark" title="07/30/2009">MySQL Data Types Quick Reference Table: MySQL Version 5.0</a> &#8211; 07/30/2009</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
<li><a href="http://vadimg.com/2009/07/30/difference-between-innodb-and-myisam/" rel="bookmark" title="07/30/2009">Difference Between InnoDB and MyISAM</a> &#8211; 07/30/2009</li>
</ul>
<p><!-- Similar Posts took 4.416 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/10/new-mysql-5-test-exam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>פורומים פעילים באתר</title>
		<link>http://vadimg.com/2009/08/10/%d7%a4%d7%95%d7%a8%d7%95%d7%9e%d7%99%d7%9d-%d7%a4%d7%a2%d7%99%d7%9c%d7%99%d7%9d-%d7%91%d7%90%d7%aa%d7%a8/</link>
		<comments>http://vadimg.com/2009/08/10/%d7%a4%d7%95%d7%a8%d7%95%d7%9e%d7%99%d7%9d-%d7%a4%d7%a2%d7%99%d7%9c%d7%99%d7%9d-%d7%91%d7%90%d7%aa%d7%a8/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 06:48:49 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[פורומים]]></category>
		<category><![CDATA[בעיות]]></category>
		<category><![CDATA[פרוומים]]></category>
		<category><![CDATA[שאלות]]></category>
		<category><![CDATA[תמיכה]]></category>
		<category><![CDATA[תשובות]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=441</guid>
		<description><![CDATA[לאחר בקשות מכמה משתמשים החלטנו לנסות ולהריץ פיילוט של הפורומים באתר, בעבר זה לא עבד מכמה סיבות אישיות שלי, אך הפעם ניסיתי להוציא כמה שפחות על הפורומים הללו ולכן החלטתי ללכת על מערכת פשוטה שמתחברת אל וורדפרס. כעת תוכלו לשאלות שאלות, בקשות, להציג את מה שאתם עובדים עליו או סתם לדבר על כל נושא אחר [...]]]></description>
			<content:encoded><![CDATA[<p>לאחר בקשות מכמה משתמשים החלטנו לנסות ולהריץ פיילוט של הפורומים באתר, בעבר זה לא עבד מכמה סיבות אישיות שלי, אך הפעם ניסיתי להוציא כמה שפחות על הפורומים הללו ולכן החלטתי ללכת על מערכת פשוטה שמתחברת אל וורדפרס. כעת תוכלו לשאלות שאלות, בקשות, להציג את מה שאתם עובדים עליו או סתם לדבר על כל נושא אחר שיש לכם בראש.</p>
<p>בכדי להכנס לפרומים יש לצפות בקישור בחלק העליון של האתר.<strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.794 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/10/%d7%a4%d7%95%d7%a8%d7%95%d7%9e%d7%99%d7%9d-%d7%a4%d7%a2%d7%99%d7%9c%d7%99%d7%9d-%d7%91%d7%90%d7%aa%d7%a8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Forums now available</title>
		<link>http://vadimg.com/2009/08/10/forums-now-available/</link>
		<comments>http://vadimg.com/2009/08/10/forums-now-available/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 06:45:55 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[פורומים]]></category>
		<category><![CDATA[requests]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=438</guid>
		<description><![CDATA[We have our forums available now for you to browse chat and post support topics or issues your having on various subjects. You can access the forums using the menu button at the top of this page. Similar Posts None Found]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction: ltr;">
<p>We have our forums available now for you to browse chat and post support topics or issues your having on various subjects.</p>
<p>You can access the forums using the menu button at the top of this page.</p></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 1.778 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/10/forums-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Test Center</title>
		<link>http://vadimg.com/2009/08/06/custom-test-center/</link>
		<comments>http://vadimg.com/2009/08/06/custom-test-center/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 14:05:43 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[exam]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[learn]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[score]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[take exam]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=430</guid>
		<description><![CDATA[I have been wanting make some sort of a test center to allow visitors to actually take an exam on various subjects such as PHP, MySQL, JS etc. Currently i have added two tests with over 40 different questions related to the PHP programming language. One is for beginners and the other is for more [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">
<p style="text-align: left; direction: ltr;">I have been wanting make some sort of a test center to allow visitors to actually take an exam on various subjects such as PHP, MySQL, JS etc.</p>
<p style="text-align: left; direction: ltr;"><span id="more-430"></span></p>
<p style="text-align: left; direction: ltr;">Currently i have added two tests with over 40 different questions related to the PHP programming language. One is for beginners and the other is for more advanced programmers, In order to see the second PHP test you will need to pass the first one. You can do as many tests as you like, Each test will be scored at the end based on the answers you provide. Some of the questions can have more then one answer but most of them have only a single answer that is fully correct.</p>
<p style="text-align: left; direction: ltr;">You can register to that system (preferred &#8211; since if more then one person logs in as the guest the other will be disconnected ), Or log in using the guest user name and password (Just use the &#8216;login as guest&#8217; button). You will be able to take the tests and then view the results, at any time during the test you can review your answers and change your mind if you need to. Each test has a set of questions and a time limit just to make it more interesting. You can also print the questions and your test results to a PDF document or an HTML page.</p>
<p style="text-align: left; direction: ltr;">I will be adding more tests within time, Hopefully this will help some people as it does for me, I like doing tests before i take any kind of exam just to make sure i have some good practice before the real exam takes place. If you want to contribute and add your own questions and/or tests just let me know and we will see what we can do.</p>
<p style="text-align: left; direction: ltr;">To access the test center just visit the following link: <a href="http://www.vadimg.com/tester/index.php" target="_blank">Click Here</a></p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
<li><a href="http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/" rel="bookmark" title="08/13/2009">PHP Job Position &#8211; Center Tel-Aviv, Israel</a> &#8211; 08/13/2009</li>
<li><a href="http://vadimg.com/2012/03/30/usps-php-api-wrapper-class-library/" rel="bookmark" title="03/30/2012">USPS PHP API Wrapper | Class Library</a> &#8211; 03/30/2012</li>
<li><a href="http://vadimg.com/2012/03/31/usps-php-api-usage-examples/" rel="bookmark" title="03/31/2012">USPS PHP API &#8211; Usage Examples</a> &#8211; 03/31/2012</li>
<li><a href="http://vadimg.com/2010/12/02/php-bug-tracker-instant-search-suggestions-advanced-search-ticket-updates/" rel="bookmark" title="12/02/2010">PHP Bug Tracker &#8211; Instant Search Suggestions, Advanced Search, Ticket Updates</a> &#8211; 12/02/2010</li>
</ul>
<p><!-- Similar Posts took 7.091 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/06/custom-test-center/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>מבחני דוגמא בנושאים שונים</title>
		<link>http://vadimg.com/2009/08/06/%d7%9e%d7%91%d7%97%d7%a0%d7%99-%d7%93%d7%95%d7%92%d7%9e%d7%90-%d7%91%d7%a0%d7%95%d7%a9%d7%90%d7%99%d7%9d-%d7%a9%d7%95%d7%a0%d7%99%d7%9d/</link>
		<comments>http://vadimg.com/2009/08/06/%d7%9e%d7%91%d7%97%d7%a0%d7%99-%d7%93%d7%95%d7%92%d7%9e%d7%90-%d7%91%d7%a0%d7%95%d7%a9%d7%90%d7%99%d7%9d-%d7%a9%d7%95%d7%a0%d7%99%d7%9d/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 14:05:30 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[דוגמא]]></category>
		<category><![CDATA[מבחן דוגמא ב PHP]]></category>
		<category><![CDATA[מבחנים]]></category>
		<category><![CDATA[תרגול]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=433</guid>
		<description><![CDATA[אחד הדברים שאני אוהב לעשות לפני שאני נגש לבחינה, זה בעצם לבצע בחינות שונות בתור תרגול. לכן חשבתי על לנסות ולייסם איזשהי אפליקציה שבעזרתה אוכל לתת מבחנים שונים בנושאים שונים כמו PHP, MySQL, JS  ועוד. כרגע ישנם שני מבחנים בנושא ה PHP עם מעל ל 40 שאלות שונות. מבחן אחד הוא לאלו שמתחילים בנושא הזה [...]]]></description>
			<content:encoded><![CDATA[<p>אחד הדברים שאני אוהב לעשות לפני שאני נגש לבחינה, זה בעצם לבצע בחינות שונות בתור תרגול. לכן חשבתי על לנסות ולייסם איזשהי אפליקציה שבעזרתה אוכל לתת מבחנים שונים בנושאים שונים כמו PHP, MySQL, JS  ועוד.</p>
<p><span id="more-433"></span></p>
<p>כרגע ישנם שני מבחנים בנושא ה PHP עם מעל ל 40 שאלות שונות. מבחן אחד הוא לאלו שמתחילים בנושא הזה ומבחן אחר הוא למתכנתים קצת יותר מתקדמים, בכדי לראות את המבחן השני יש לעבור את המבחן הראשון בהצלחה. תוכלו לבצע כמה מבחנים שתרצו, בכל אחד תקבלו ציון משוכלל על סמך התשובות הנכונות שעניתם עליהם. ישנם שאלות שיכולות להיות לה כמה תשובות נכונות, במקרה הזה יש לבחור את כל התשובות שהנכם חושבים בתור נכונים, אך ברוב השאלות ישנה תשובה אחת נכונה במלואה.</p>
<p>תוכלו להרשם למערכת הזאת (מומלץ &#8211; מאחר ואם משהו מתחבר בתור אורח והנכם מחוברים כבר לאותו משתמש סביר להניח שאחד מכם ינותק וחבל), או להתחבר בתור אורח שכבר מוגדר במערכת בעזרת שם המשתמש והסיסמא (או להשתמש בכפתור login as guests&#8217;). תוכלו לבצע את המבחן לענות על השאלות ואפילו לחזור לשאלות שענתם קודם לכן כדי לבדוק אותם שום פעם או לשנות את התשובה שלכם, בסוף המבחן בשאלה האחרונה יש ללחוץ על כפתור ה &#8216;finish&#8217; כדי לסיים את הבחינה. בכל בחינה יש מספר מסויים של שאלות וזמן מוקצב לאותה בחינה, בסוף הבחינה תקבלו את הציון ותוכלו אפילו להוריד את השאלות שהיו לכם בבחינה עם הציון הסופי שלכם בתור מסמך PDF או HTML רגיל לצרכי הדפסה.</p>
<p>עם הזמן אני מתכוון להוסיף מבחנים נוספים בתקווה שזה יעזור לאנשים כמו שזה עוזר לי לפני בחינה אמיתית. אם תרצו לשתף פעולה להוסיף מבחנים ו/או שאלות בעצמכם צרו קשר ונראה איך אפשר יהיה ליישם את זה.</p>
<p>כדי לגשת לאתר הבחינות תוכלו לצפות בקישור הבא: <a href="http://www.vadimg.com/tester/index.php" target="_blank">Click Here</a><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/08/06/custom-test-center/" rel="bookmark" title="08/06/2009">Custom Test Center</a> &#8211; 08/06/2009</li>
<li><a href="http://vadimg.com/2009/05/06/zendframework-18-manual-chm-file/" rel="bookmark" title="05/06/2009">ZendFramework 1.8 Manual CHM file</a> &#8211; 05/06/2009</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2009/02/03/%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-%d7%90%d7%95-%d7%94%d7%aa%d7%97%d7%9c%d7%94-%d7%97%d7%93%d7%a9%d7%94/" rel="bookmark" title="02/03/2009">עבודה עם פריימוורק או התחלה חדשה?</a> &#8211; 02/03/2009</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
</ul>
<p><!-- Similar Posts took 6.686 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/06/%d7%9e%d7%91%d7%97%d7%a0%d7%99-%d7%93%d7%95%d7%92%d7%9e%d7%90-%d7%91%d7%a0%d7%95%d7%a9%d7%90%d7%99%d7%9d-%d7%a9%d7%95%d7%a0%d7%99%d7%9d/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Mod_Rewrite Tips and Tricks are lot of .htaccess rewrite examples</title>
		<link>http://vadimg.com/2009/08/05/mod_rewrite-tips-and-tricks-are-lot-of-htaccess-rewrite-examples/</link>
		<comments>http://vadimg.com/2009/08/05/mod_rewrite-tips-and-tricks-are-lot-of-htaccess-rewrite-examples/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 09:19:29 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[אופטימיזציה]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[.htacces]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[mod rewrite]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=423</guid>
		<description><![CDATA[Mod_Rewrite Tips and Tricks are lot of .htaccess rewrite examples that show specific uses for creating .htaccess rewrites to do all kinds of cool and profitable stuff for your site. Htaccess Rewrites are enabled by using the Apache module mod_rewrite, which is one of the most powerful Apache modules and features availale. Htaccess Rewrites through [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left;direction:ltr;">
<p><strong><a id="mod_rewrite-tips-tricks" title="mod_rewrite RewriteRule and RewriteCond tips and tricks" name="mod_rewrite-tips-tricks">Mod_Rewrite Tips and Tricks</a></strong> are lot of <strong>.htaccess rewrite examples</strong> that show specific uses for creating .htaccess rewrites to do all kinds of cool and profitable stuff for your site.   <strong>Htaccess Rewrites</strong> are enabled by using the Apache module <a href="http://www.askapache.com/servers/mod_rewrite.c.html">mod_rewrite</a>, which is one of the most powerful Apache modules and features availale. Htaccess Rewrites through mod_rewrite provide the special ability to <strong>Rewrite requests internally</strong> as well as <em>Redirect request externally</em>.</p>
<p><span id="more-423"></span></p>
<p>When the url in your browser’s location bar stays the same for a request it is an internal rewrite, when the url changes an external redirection is taking place. This is one of the first, and one of the biggest mental-blocks people have when learning about mod_rewrite… But I have a secret weapon for you to use, a new discovery from years of research that makes learning mod_rewrite drastically quicker and easier. It truly does or I wouldn’t be saying so in the introduction of this article.</p>
<blockquote><p>Despite the tons of examples and docs, <strong>mod_rewrite is voodoo</strong>.<br />
Damned cool voodoo, but still voodoo.<br />
– <cite>Brian Moore</cite></p></blockquote>
<p><strong>Note:</strong> After years of fighting to learn my way through rewriting urls with mod_rewrite, I finally had a breakthrough and found a way to outsmart the difficulty of mod_rewrite that I just couldn’t seem to master. The <a href="http://www.askapache.com/htaccess/mod_rewrite-variables-cheatsheet.html">Mod_Rewrite RewriteCond/RewriteRule Variable Value Cheatsheet</a> is the one-of-a-kind tool that changed the game for me and made mod_rewriting no-harder than anything else.</p>
<p>So keep that mod_rewrite reference bookmarked and you will be able to figure out any RewriteRule or RewriteCond, an amazing feat considering it took me a LONG time to figure this stuff out on my own. But that was before <a href="http://www.askapache.com/htaccess/crazy-advanced-mod_rewrite-tutorial.html">the craziness</a>, one of the most challenging and productive .htaccess experiments I’ve done… An experiment so <strong>ILL</strong> it’s sick like a diamond disease on your wrist! $$$. That mod_rewrite experiment/tutorial was the culmination of many different advanced mod_rewrite experiments I had done in the past and included most of my very best .htaccess tricks. With the cheatsheet it’s no longer Voodoo.. Its just what you do. Now lets dig in!</p>
<h2>Htaccess rewrites TOC</h2>
<ul>
<li><a title=".htaccess mod rewrite should use Options +FollowSymLinks" href="#default-mod-rewrite-hint">.htaccess rewrite examples should begin with:</a></li>
<li><a title="Use mod_rewrite in Apache htaccess to Require the www for SEO" href="#require-the-www-in-htaccess">Require the www</a></li>
<li><a title="Use mod_rewrite in Apache htaccess to Require no www for SEO" href="#require-no-www-in-htaccess">Require no www</a></li>
<li><a title="Search for a key in the query string" href="#check-for-key-in-query-string">Check for a key in QUERY_STRING</a></li>
<li><a title="Remove the query string from url" href="#delete-query-string">Removes the QUERY_STRING from the URL</a></li>
<li><a title="Stop internal redirect looping" href="#fix-infinite-loop-redirects">Fix for infinite loops</a></li>
<li><a title="Redirecting .php file extensions to .html" href="#external-redirect-php-files-to-html">Redirect .php files to .html files (SEO friendly)</a></li>
<li><a title="Redirecting .html file extensions to .php" href="#internal-redirect-php-files-to-html">Redirect .html files to actual .php files (SEO friendly)</a></li>
<li><a title="Deny access with Apache htaccess during certain hours of the day" href="#time-based-access">block access to files during certain hours of the day</a></li>
<li><a title="Change underscores to hyphens for SEO URL" href="#convert-underscore-hyphen">Rewrite underscores to hyphens for SEO URL</a></li>
<li><a title="mod_rewrite example of SEO 301 redirecting non-www to www" href="#require-www-no-hardcoding">Require the www without hardcoding</a></li>
<li><a title="mod_rewrite subdomain usage example of SEO 301 redirecting" href="#require-no-subdomain-1">Require no subdomain</a></li>
<li><a title="Apache htaccess htaccess rewrite ~without slash" href="#require-no-subdomain-2">Require no subdomain</a></li>
<li><a title="Rewriting WordPress RSS feeds to Feedburner in SEO friendly method" href="#redirect-wordpress-feed">Redirecting WordPress Feeds to Feedburner</a></li>
<li><a title="Deny Request Methods other than GET or PUT" href="#only-allow-get-and-put-requests">Only allow GET and PUT request methods</a></li>
<li><a title="hotlinking and bandwidth stealing with mod_rewrite, hotlinking example" href="#prevent-hotlinking">Prevent Files image/file hotlinking and bandwidth stealing</a></li>
<li><a title="Fix prefetching in browsers" href="#stop-browser-prefetching">Stop browser prefetching</a></li>
<li><a title="Help Firefox browser with prefetching in htaccess. " href="#firefox-prefetching-hint">Make a prefetching hint for Firefox. </a></li>
</ul>
<hr />If you really want to take a look, check out the <a href="http://www.askapache.com/servers/mod_rewrite.c.html">mod_rewrite.c</a> and <a href="http://www.askapache.com/servers/mod_rewrite.h.html">mod_rewrite.h</a> files.</p>
<p>Be aware that mod_rewrite (<em>RewriteRule, RewriteBase, and RewriteCond</em>) code is executed for each and every HTTP request that accesses a file in or below the directory where the code resides, so it’s always good to limit the code to certain circumstances if readily identifiable.</p>
<p><strong>For example</strong>, to limit the next 5 RewriteRules to only be applied to .html and .php files, you can use the following code, which tests if the url does not end in .html or .php and if it doesn’t, it will skip the next 5 RewriteRules.</p>
<hr />
<pre>RewriteRule !\.(html|php)$ - [S=5]
RewriteRule ^.*-(vf12|vf13|vf5|vf35|vf1|vf10|vf33|vf8).+$ - [S=1]</pre>
<h2><a id="default-mod-rewrite-hint" title="Mostly .htaccess rewrite examples should begin with:" name="default-mod-rewrite-hint" href="#default-mod-rewrite-hint">.htaccess rewrite examples should begin with:</a></h2>
<pre>Options +FollowSymLinks

RewriteEngine On
RewriteBase /</pre>
<h2><a id="require-the-www-in-htaccess" title="Require the www" name="require-the-www-in-htaccess" href="#require-the-www-in-htaccess">Require the www</a></h2>
<pre>Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.askapache\.com$ [NC]
RewriteRule ^(.*)$ http://www.askapache.com/$1 [R=301,L]</pre>
<h2>Loop Stopping Code</h2>
<p>Sometimes your rewrites cause infinite loops, stop it with one of these rewrite code snippets.</p>
<pre>RewriteCond %{REQUEST_URI} ^/(stats/|missing\.html|failed_auth\.html|error/).* [NC]
RewriteRule .* - [L]

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]</pre>
<h2>Cache-Friendly File Names</h2>
<p>This is probably my favorite, and I use it on every site I work on. It allows me to update my javascript and css files in my visitors cache’s simply by naming them differently in the html, on the server they stay the same name. This rewrites all files for <code>/zap/j/anything-anynumber.js to /zap/j/anything.js and /zap/c/anything-anynumber.css to /zap/c/anything.css</code></p>
<pre>RewriteRule ^zap/(j|c)/([a-z]+)-([0-9]+)\.(js|css)$ /zap/$1/$2.$4 [L]</pre>
<h2>SEO friendly link for non-flash browsers</h2>
<p>When you use flash on your site and you properly supply a link to download flash that shows up for non-flash aware browsers, it is nice to use a shortcut to keep your code clean and your external links to a minimum. This code allows me to link to <code>site.com/getflash/</code> for non-flash aware browsers.</p>
<pre>RewriteRule ^getflash/?$ http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash [NC,L,R=307]</pre>
<h2>Removing the Query_String</h2>
<p>On many sites, the page will be displayed for both page.html and page.html?anything=anything, which hurts your SEO with duplicate content. An easy way to fix this issue is to redirect external requests containing a query string to the same uri without the query_string.</p>
<pre>RewriteCond %{THE_REQUEST} ^GET\ /.*\;.*\ HTTP/
RewriteCond %{QUERY_STRING} !^$
RewriteRule .* http://www.askapache.com%{REQUEST_URI}? [R=301,L]</pre>
<h2>Sending requests to a php script</h2>
<p>This .htaccess rewrite example invisibly rewrites requests for all Adobe pdf files to be handled by <code>/cgi-bin/pdf-script.php</code></p>
<pre>RewriteRule ^(.+)\.pdf$  /cgi-bin/pdf-script.php?file=$1.pdf [L,NC,QSA]</pre>
<h2>Setting the language variable based on Client</h2>
<p>For sites using multiviews or with multiple language capabilities, it is nice to be able to send the correct language automatically based on the clients preferred language.</p>
<pre>RewriteCond %{HTTP:Accept-Language} ^.*(de|es|fr|it|ja|ru|en).*$ [NC]
RewriteRule ^(.*)$ - [env=prefer-language:%1]</pre>
<h2>Deny Access To Everyone Except PHP fopen</h2>
<p>This allows access to all files by php fopen, but denies anyone else.</p>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^.+$ [NC]
RewriteRule .* - [F,L]</pre>
<p>If you are looking for ways to block or deny specific requests/visitors, then you should definately read <a title="Eight Ways to Blacklist with Apache’s mod_rewrite" href="http://perishablepress.com/press/2009/02/03/eight-ways-to-blacklist-with-apaches-mod_rewrite/">Blacklist with mod_rewrite</a>.  I give it a 10/10</p>
<h2>Deny access to anything in a subfolder except php fopen</h2>
<p>This can be very handy if you want to serve media files or special downloads but only through a php proxy script.</p>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/.*\ HTTP [NC]
RewriteRule .* - [F,L]</pre>
<h2><a id="require-no-www-in-htaccess" title="Require no www" name="require-no-www-in-htaccess" href="#require-no-www-in-htaccess">Require no www</a></h2>
<pre>Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^askapache\.com$ [NC]
RewriteRule ^(.*)$ http://askapache.com/$1 [R=301,L]</pre>
<h2><a id="check-for-key-in-query-string" title="Search for a key in the query string" name="check-for-key-in-query-string" href="#check-for-key-in-query-string">Check for a key in QUERY_STRING</a></h2>
<p>Uses a <a title="RewriteCond Directive Use in htaccess" href="http://askapache.info/trunk/mod/mod_rewrite.html#rewritecond">RewriteCond</a> Directive to check QUERY_STRING for passkey, if it doesn’t find it it redirects all requests for anything in the /logged-in/ directory to the /login.php script.</p>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !passkey
RewriteRule ^/logged-in/(.*)$ /login.php [L]</pre>
<h2><a id="delete-query-string" title="Remove the query string from url" name="delete-query-string" href="#delete-query-string">Removes the QUERY_STRING from the URL</a></h2>
<p>If the QUERY_STRING has any value at all besides blank than the<code>?</code>at the end of /login.php? tells mod_rewrite to remove the QUERY_STRING from login.php and redirect.</p>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} .
RewriteRule ^login.php /login.php? [L]</pre>
<h2><a id="fix-infinite-loop-redirects" title="Fix for infinite loops" name="fix-infinite-loop-redirects" href="#fix-infinite-loop-redirects">Fix for infinite loops</a></h2>
<p>An error message related to this is<code>Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.</code>or you may see<code>Request exceeded the limit</code>,<code>probable configuration error</code>,<code>Use 'LogLevel debug' to get a backtrace</code>, or<code>Use 'LimitInternalRecursion' to increase the limit if necessary</code></p>
<pre>RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]</pre>
<h2><a id="external-redirect-php-files-to-html" title="External Redirect .php files to .html files (SEO friendly)" name="external-redirect-php-files-to-html" href="#external-redirect-php-files-to-html">External Redirect .php files to .html files (SEO friendly)</a></h2>
<pre>RewriteRule ^(.*)\.php$ /$1.html [R=301,L]</pre>
<h2><a id="internal-redirect-php-files-to-html" title="Internal Redirect .php files to .html files (SEO friendly)" name="internal-redirect-php-files-to-html" href="#internal-redirect-php-files-to-html">Internal Redirect .php files to .html files (SEO friendly)</a></h2>
<p>Redirects all files that end in .html to be served from filename.php so it looks like all your pages are .html but really they are .php</p>
<pre>RewriteRule ^(.*)\.html$ $1.php [R=301,L]</pre>
<h2><a id="time-based-access" title="block access to files during certain hours of the day" name="time-based-access" href="#time-based-access">block access to files during certain hours of the day</a></h2>
<pre>Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# If the hour is 16 (4 PM) Then deny all access
RewriteCond %{TIME_HOUR} ^16$
RewriteRule ^.*$ - [F,L]</pre>
<h2><a id="convert-underscore-hyphen" title="Change underscores to hyphens for SEO URL" name="convert-underscore-hyphen" href="#convert-underscore-hyphen">Rewrite underscores to hyphens for SEO URL</a></h2>
<p>Converts all underscores “_” in urls to hyphens “-” for SEO benefits…  See the <a href="http://www.askapache.com/htaccess/rewrite-underscores-to-hyphens-for-seo-url.html">full article</a> for more info.</p>
<pre>Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteRule !\.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]

RewriteCond %{ENV:uscor} ^Yes$
RewriteRule (.*) http://d.com/$1 [R=301,L]</pre>
<h2><a id="require-www-no-hardcoding" title="Require the www without hardcoding" name="require-www-no-hardcoding" href="#require-www-no-hardcoding">Require the www without hardcoding</a></h2>
<pre>Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.[a-z-]+\.[a-z]{2,6} [NC]
RewriteCond %{HTTP_HOST} ([a-z-]+\.[a-z]{2,6})$     [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]</pre>
<h2><a id="require-no-subdomain-1" title="Require no subdomain" name="require-no-subdomain-1" href="#require-no-subdomain-1">Require no subdomain</a></h2>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} \.([a-z-]+\.[a-z]{2,6})$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R=301,L]</pre>
<h2><a id="require-no-subdomain-2" title="Require no subdomain" name="require-no-subdomain-2" href="#require-no-subdomain-2">Require no subdomain</a></h2>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} \.([^\.]+\.[^\.0-9]+)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]</pre>
<h2><a id="redirect-wordpress-feed" title="Redirecting WordPress Feeds to Feedburner" name="redirect-wordpress-feed" href="#redirect-wordpress-feed">Redirecting WordPress Feeds to Feedburner</a></h2>
<p>Full article:<a title="Redirecting WordPress Feeds to Feedburner" href="http://www.askapache.com/htaccess/redirecting-wordpress-feeds-to-feedburner.html">Redirecting WordPress Feeds to Feedburner</a></p>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/feed\.gif$
RewriteRule .* - [L]

RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
RewriteRule ^feed/?.*$ http://feeds.feedburner.com/apache/htaccess [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]</pre>
<h2><a id="only-allow-get-and-put-requests" title="Only allow GET and PUT request methods" name="only-allow-get-and-put-requests" href="#only-allow-get-and-put-requests">Only allow GET and PUT Request Methods</a></h2>
<p>Article: <a title="List of Apache Recognized Request Methods" href="http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#http-methods-recognized">Request Methods</a></p>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} !^(GET|PUT)
RewriteRule .* - [F]</pre>
<h2><a id="prevent-hotlinking" title="Prevent Files image/file hotlinking and bandwidth stealing" name="prevent-hotlinking" href="#prevent-hotlinking">Prevent Files image/file hotlinking and bandwidth stealing</a></h2>
<pre>RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?askapache.com/.*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]</pre>
<h2><a id="stop-browser-prefetching" title="Stop browser prefetching" name="stop-browser-prefetching" href="#stop-browser-prefetching">Stop browser prefetching</a></h2>
<pre>RewriteEngine On
SetEnvIfNoCase X-Forwarded-For .+ proxy=yes
SetEnvIfNoCase X-moz prefetch no_access=yes

# block pre-fetch requests with X-moz headers
RewriteCond %{ENV:no_access} yes
RewriteRule .* - [F,L]</pre>
<blockquote cite="http://askapache.info/trunk/mod/mod_rewrite.html#rewritebase"><p>This module uses a rule-based rewriting engine (based on a regular-expression parser) to rewrite requested URLs on the fly. It supports an unlimited number of rules and an unlimited number of attached rule conditions for each rule, to provide a really flexible and powerful URL manipulation mechanism. The URL manipulations can depend on various tests, of server variables, environment variables, HTTP headers, or time stamps. Even external database lookups in various formats can be used to achieve highly granular URL matching.</p>
<p>This module operates on the full URLs (including the path-info part) both in per-server context (<code>httpd.conf</code>) and per-directory context (<code>.htaccess</code>) and can generate query-string parts on result. The rewritten result can lead to internal sub-processing, external request redirection or even to an internal proxy throughput.</p>
<p>Further details, discussion, and examples, are provided in the <a href="http://askapache.info/trunk/rewrite/index.html">detailed mod_rewrite documentation</a>.</p></blockquote>
<h2>Directives</h2>
<ul>
<li><a href="http://askapache.info/trunk/mod/mod_rewrite.html#rewritebase">RewriteBase</a></li>
<li><a href="http://askapache.info/trunk/mod/mod_rewrite.html#rewritecond">RewriteCond</a></li>
<li><a href="http://askapache.info/2.2/mod/mod_rewrite.html#rewriteengine">RewriteEngine</a></li>
<li><a href="http://askapache.info/trunk/mod/mod_rewrite.html#rewritelock">RewriteLock</a></li>
<li><a href="http://askapache.info/2.0/mod/mod_rewrite.html#rewritelog">RewriteLog</a></li>
<li><a href="http://askapache.info/trunk/mod/mod_rewrite.html#rewriteloglevel">RewriteLogLevel</a></li>
<li><a href="http://askapache.info/trunk/mod/mod_rewrite.html#rewritemap">RewriteMap</a></li>
<li><a href="http://askapache.info/1.3/mod/mod_rewrite.html#rewriteoptions">RewriteOptions</a></li>
<li><a href="http://askapache.info/trunk/mod/mod_rewrite.html#rewriterule">RewriteRule</a></li>
</ul>
<p>Source: <a href="http://www.askapache.com/htaccess/mod_rewrite-tips-and-tricks.html#require-the-www-in-htaccess" target="_blank">AskApache.com</a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/09/24/apache-rewrite-rules-http-to-https-force-ssl/" rel="bookmark" title="09/24/2009">Apache rewrite rules &#8211; Http to Https &#8211; Force SSL</a> &#8211; 09/24/2009</li>
<li><a href="http://vadimg.com/2009/07/28/speed-up-a-web-site-by-enabling-apache-file-compression/" rel="bookmark" title="07/28/2009">Speed up a web site by enabling Apache file compression</a> &#8211; 07/28/2009</li>
</ul>
<p><!-- Similar Posts took 5.409 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/05/mod_rewrite-tips-and-tricks-are-lot-of-htaccess-rewrite-examples/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>(IM) Custom Navigation 1.0</title>
		<link>http://vadimg.com/2009/08/05/im-custom-navigation-1-0/</link>
		<comments>http://vadimg.com/2009/08/05/im-custom-navigation-1-0/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 08:23:04 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[פורומים]]></category>
		<category><![CDATA[custom navigation]]></category>
		<category><![CDATA[invision power]]></category>
		<category><![CDATA[ipb]]></category>
		<category><![CDATA[modifications]]></category>
		<category><![CDATA[mods]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=418</guid>
		<description><![CDATA[This modificaiton will allow you to add, edit and delete navigation menus through the ACP that will display in the forums primary navigation menu. File Name: (IM) Custom Navigation 1.0 Author: Vince Category: Application Description This modificaiton will allow you to add, edit and delete navigation menus through the ACP that will display in the [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left;direction:ltr;">This modificaiton will allow you to add, edit and delete navigation menus through the ACP that will display in the forums primary navigation menu.</div>
<div style="text-align:left;direction:ltr;"><span id="more-418"></span></div>
<div style="text-align:left;direction:ltr;"><strong>File Name</strong>: (IM) Custom Navigation 1.0<br />
<strong>Author</strong>: Vince<br />
<strong>Category</strong>: Application</div>
<div style="text-align:left;direction:ltr;">
<p><strong>Description</strong></p>
<p>This modificaiton will allow you to add, edit and delete navigation menus through the ACP that will display in the forums primary navigation menu.</p>
<p><strong>Quick Feature List</strong></p>
<ul>
<li> Turn menu on/off</li>
<li> Drag &amp; Drop ordering</li>
<li> Display on group basis</li>
<li> Drop down for menus</li>
<li> Icons per menu</li>
<li> Tab highlighted when it was selected</li>
<li> Import/export of menus (one by one, sets or everything)</li>
<li> Description (internal and public one)</li>
<li> Menu Nesting (two levels at the most)</li>
</ul>
<p><strong>Note</strong></p>
<p>By default the modification will remove all the menus you had. So there is an xml file attached with this zip that by importing it will return the default menus which are Home, Forums and members. The rest will need to be populated by you.</p>
<p>In order to install them just import the XML file that came with this modification using the import tool in the custom navigation application.</p>
<p><a href="http://www.vadimg.com/wp-content/uploads/2009/08/post-1203-1249408513.jpg" rel="lightbox[418]"><img class="aligncenter size-large wp-image-420" title="post-1203-1249408513" src="http://www.vadimg.com/wp-content/uploads/2009/08/post-1203-1249408513-1024x224.jpg" alt="post-1203-1249408513" width="1024" height="224" /></a></p>
<p><a href="http://www.vadimg.com/wp-content/uploads/2009/08/post-1203-1249408504.jpg" rel="lightbox[418]"><img class="aligncenter size-large wp-image-419" title="post-1203-1249408504" src="http://www.vadimg.com/wp-content/uploads/2009/08/post-1203-1249408504-1024x619.jpg" alt="post-1203-1249408504" width="1024" height="619" /></a></p>
<p><strong>Disclaimer:</strong></p>
<p>Before purchasing this modification be sure to read the following:</p>
<ul>
<li> All sales are final. There will be no refunds after the mod was shipped.</li>
<li> Since this is a first release their will be probably bugs so if you encounter them please report them to the bug tracker and i will get them fixed.</li>
<li> I can&#8217;t promise that every single feature request will be added to the next release so keep that in mind. But i will try to do my best.</li>
<li> If you bought a modification from be before you will get the product in less then 24 hours (usually less then that). If you are a premium member here you will also get it in less then 24 hours. If you are a new customer and a regular member you will need to wait for at least 48 hours before receiving the modification. That&#8217;s just a precaution i have to take in order to reduce the fraud to as low as i can.</li>
<li> If more then 48 hours have passed and you did not recive anything yet then PM me with your email addressed you used when purchasing it and i will look into your case.</li>
<li> Until we can get a system up and running for an online store the modifications i will deliver will be sent using the email. So once you transfer the fee just make sure you actually enter your email address that you registered with.</li>
<li> Since this is a premium modification redistribution and transfers are not allowed! If you would like to resell the modifications then contact me by a PM and we will see what we can do.</li>
<li> Each purchase represents a license, Each licenses is valid for one domain so if you need this modification on several sites you will need to purchase several licenses for the usage or purchase a multi license at a lower cost.</li>
</ul>
<p><strong>Purchase Information:</strong></p>
<p>Please visit: <a href="http://www.invisionmodding.com/index.php?showtopic=40714" target="_blank">InvisionModding.com</a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/08/25/ipb-sdk-v3-for-ipb-3/" rel="bookmark" title="08/25/2009">IPB SDK V3 FOR IPB 3</a> &#8211; 08/25/2009</li>
</ul>
<p><!-- Similar Posts took 3.192 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/08/05/im-custom-navigation-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Developer job position</title>
		<link>http://vadimg.com/2009/07/30/php-developer-job-position/</link>
		<comments>http://vadimg.com/2009/07/30/php-developer-job-position/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 16:55:02 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[job position]]></category>
		<category><![CDATA[php job]]></category>
		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=411</guid>
		<description><![CDATA[PHP Developer job position The PHP Developer will be responsible for developing the backend engine of our e-commerce platform. Projects will range from modifying templates to enhancing site functionality to developing entirely new online products. This role will be immersed in the entire software development life cycle (design, code generation, testing and maintenance). The ideal [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction:ltr;">
<p><strong>PHP Developer job position</strong></p>
<p>The PHP Developer will be responsible for developing the backend engine of our e-commerce platform. Projects will range from modifying templates to enhancing site functionality to developing entirely new online products. This role will be immersed in the entire software development life cycle (design, code generation, testing and maintenance). The ideal candidate will be able to gather requirements from management and quickly turn around new products.</p>
<p><span id="more-411"></span></p>
<p><strong>Requirements</strong></p>
<ul>
<li>2+ years experience code developing with PHP</li>
<li>Understanding of database fundamentals and MySQL programming experience.</li>
<li>Ability to multi-task, detail oriented.</li>
<li>Knowledge of Asterisk &#8211; advantage</li>
</ul>
<p><strong>Contact Information</strong></p>
<p>Elran Millo | Recruitment Consultant</p>
<p>72 Pinchas Rozen St.,<br />
Tel Aviv 69512, Israel</p>
<p>Email: <span>Elran [at] ethosia [dot] com</span><br />
Office: +972-3-7678999<br />
Direct: +972-3-7678926<br />
<a href="http://www.ethosia.co.il" target="_blank">www.ethosia.co.il</a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/" rel="bookmark" title="08/13/2009">PHP Job Position &#8211; Center Tel-Aviv, Israel</a> &#8211; 08/13/2009</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2010/02/03/hiphop-for-php-move-fast/" rel="bookmark" title="02/03/2010">HipHop for PHP: Move Fast</a> &#8211; 02/03/2010</li>
<li><a href="http://vadimg.com/2010/10/20/php-project-manger-feature-list/" rel="bookmark" title="10/20/2010">PHP Project Manager Feature List</a> &#8211; 10/20/2010</li>
</ul>
<p><!-- Similar Posts took 6.833 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/30/php-developer-job-position/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Data Types Quick Reference Table: MySQL Version 5.0</title>
		<link>http://vadimg.com/2009/07/30/mysql-data-types-quick-reference-table-mysql-version-5-0/</link>
		<comments>http://vadimg.com/2009/07/30/mysql-data-types-quick-reference-table-mysql-version-5-0/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 09:01:05 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data types]]></category>
		<category><![CDATA[mysql 5]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[type]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=405</guid>
		<description><![CDATA[MySQL Data Types Quick Reference Table: MySQL Version 5.0 Learning how to use the MySQL database properly can take quite a bit of time. It is not uncommon to select a less than optimal data type when setting up a new table. Multiple data types are available for each value that you wish to store. [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">
<h1>MySQL Data Types Quick Reference Table: MySQL Version 5.0</h1>
<p>Learning how to use the MySQL database properly can take quite a bit of time. It is not uncommon to select a less than optimal data type when setting up a new table. Multiple data types are available for each value that you wish to store. This MySQL data type tutorial is intended to help take some of the mystery out of the proper type selections for database columns.</p>
<p>The following is a summary of some of the more commonly used MySQL data types and explanations regarding when each should be used.</p>
<table border="1">
<tbody>
<tr>
<th><strong>Type {storage}</strong></th>
<th><strong>Name</strong></th>
<th><strong>Range</strong></th>
<th><strong>Attributes</strong></th>
<th><strong>Default</strong></th>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{1 byte}</td>
<td>TINYINT[(M)]</td>
<td>-128 TO 127<br />
[0 to 255 if UNSIGNED]</td>
<td>AUTO_INCREMENT<br />
UNSIGNED, ZEROFILL,<br />
SERIAL DEFAULT VALUE</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{2 bytes}</td>
<td>SMALLINT[(M)]</td>
<td>-32,768 to 32,767<br />
[0 to 65,535]</td>
<td>AUTO_INCREMENT,<br />
UNSIGNED, ZEROFILL,<br />
SERIAL DEFAULT VALUE</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{3 bytes}</td>
<td>MEDIUMINT[(M)]</td>
<td>-8,388,608 to 8,388,607<br />
[0 to 16,777,215]</td>
<td>AUTO_INCREMENT,<br />
UNSIGNED, ZEROFILL,<br />
SERIAL DEFAULT VALUE</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{4 bytes}</td>
<td>INT[(M)]</td>
<td>-/+2.147E+9<br />
[0 to 4.294E+9]</td>
<td>AUTO_INCREMENT,<br />
UNSIGNED, ZEROFILL,<br />
SERIAL DEFAULT VALUE</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{8 bytes}</td>
<td>BIGINT[(M)]</td>
<td>-/+9.223E+18<br />
[0 to 18.45E+18]</td>
<td>AUTO_INCREMENT,<br />
UNSIGNED, ZEROFILL,<br />
SERIAL DEFAULT VALUE</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{4 or 8}</td>
<td>FLOAT(p)</td>
<td>p=0-24  &#8211;&gt; &#8220;FLOAT&#8221;<br />
p=25-53  &#8211;&gt; &#8220;DOUBLE&#8221;</td>
<td>UNSIGNED, ZEROFILL</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{4 bytes}</td>
<td>FLOAT[(M,D)]</td>
<td>Min=+/-1.175E-38<br />
Max=+/-3.403E+38</td>
<td>UNSIGNED, ZEROFILL</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{8 bytes}</td>
<td>DOUBLE[(M,D)]</td>
<td>Min=+/-2.225E-308<br />
Max=+/-1.798E+308</td>
<td>UNSIGNED, ZEROFILL</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Numeric</strong><br />
{M+2}</td>
<td>DECIMAL[(M,[D])]<br />
Stored as string</td>
<td>Max Range = DOUBLE range<br />
Fixed point vs. DOUBLE float</td>
<td>UNSIGNED, ZEROFILL</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>Bit</strong><br />
{8 bytes}</td>
<td>BIT[(M)]</td>
<td>Binary. Display by [add zero or converting with BIN()]. M=1-64</td>
<td>Prior to 5.03<br />
TINYINT(1) Synonym</td>
<td>NULL<br />
[0 if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{M char&#8217;s}</td>
<td>CHAR[(M)]</td>
<td>M=0-255 Characters, FIXED.<br />
Right padded with spaces.</td>
<td>BINARY, CHARACTER SET</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{M char&#8217;s<sup>1</sup>}</td>
<td>VARCHAR(M)</td>
<td>M=0-65,535 Characters<br />
M=0-255 &lt;v5.0.3</td>
<td>BINARY, CHARACTER SET</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#char&#8217;s<sup>1</sup>}</td>
<td>TINYTEXT<sup>2</sup></td>
<td>0-255 Characters</td>
<td>BINARY, CHARACTER SET</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#char&#8217;s<sup>1</sup>}</td>
<td>TEXT<sup>2</sup></td>
<td>0-65,535 Char&#8217;s</td>
<td>BINARY, CHARACTER SET</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#char&#8217;s<sup>1</sup>}</td>
<td>MEDIUMTEXT<sup>2</sup></td>
<td>0-16,777,215 Char&#8217;s</td>
<td>BINARY, CHARACTER SET</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#char&#8217;s<sup>1</sup>}</td>
<td>LONGTEXT<sup>2</sup></td>
<td>0-4,294,967,295 Char&#8217;s</td>
<td>BINARY, CHARACTER SET</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{M bytes}</td>
<td>BINARY[(M)]</td>
<td>M=0-255 bytes, FIXED.</td>
<td>Global Only<br />
(case sensitive)</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{M bytes}</td>
<td>VARBINARY(M)</td>
<td>0-65,535 bytes<br />
M=0-255 &lt;v5.0.3</td>
<td>Global Only<br />
(case sensitive)</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#bytes<sup>1</sup>}</td>
<td>TINYBLOB</td>
<td>0-255 bytes</td>
<td>Global Only<br />
(case sensitive)</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#bytes<sup>1</sup>}</td>
<td>BLOB</td>
<td>0-65,535 bytes</td>
<td>Global Only<br />
(case sensitive)</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#bytes<sup>1</sup>}</td>
<td>MEDIUMBLOB</td>
<td>0-16,777,215 bytes</td>
<td>Global Only<br />
(case sensitive)</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{#bytes<sup>1</sup>}</td>
<td>LONGBLOB</td>
<td>0-4,294,967,295 bytes</td>
<td>Global Only<br />
(case sensitive)</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{1-2 bytes}</td>
<td>ENUM<sup>2</sup><br />
(&#8220;A1&#8243;,&#8221;A2&#8243;,&#8230;)</td>
<td>Column is exactly 1 of 1-65,535 values</td>
<td>CHARACTER SET</td>
<td>NULL [1st value if NOT NULL]</td>
</tr>
<tr>
<td><strong>String</strong><br />
{1-8 bytes}</td>
<td>SET<sup>2</sup><br />
(&#8220;A1&#8243;,&#8221;A2&#8243;,&#8230;)</td>
<td>Column is 0 or more values in list of 1-64 members</td>
<td>CHARACTER SET</td>
<td>NULL<br />
["" if NOT NULL]</td>
</tr>
<tr>
<td><strong>Date &amp; Time</strong><br />
{3 bytes}</td>
<td>DATE</td>
<td>&#8220;1000-01-01&#8243; &#8211; &#8220;9999-12-31&#8243;</td>
<td>Global Only<br />
(YYYY-MM-DD)</td>
<td>NULL<br />
["0000-00-00" if NOT NULL]</td>
</tr>
<tr>
<td><strong>Date &amp; Time</strong><br />
{8 bytes}</td>
<td>DATETIME</td>
<td>&#8220;1000-01-01 00:00:00&#8243; -<br />
&#8220;9999-12-31 23:59:59&#8243;</td>
<td>Global Only<br />
(YYYY-MM-DD hh:mm:ss)</td>
<td>NULL ["0000-00-00 00:00:00"<br />
if NOT NULL]</td>
</tr>
<tr>
<td><strong>Date &amp; Time</strong><br />
{3 bytes}</td>
<td>TIME</td>
<td>&#8220;-838:59:59&#8243; &#8211; &#8220;838:59:59&#8243;</td>
<td>Global Only<br />
(hh:mm:ss)</td>
<td>NULL<br />
["00:00:00" if NOT NULL]</td>
</tr>
<tr>
<td><strong>Date &amp; Time</strong><br />
{4 bytes}</td>
<td>TIMESTAMP</td>
<td>19700101000000 -<br />
2037+</td>
<td>Global Only<br />
(YYYYMMDDhhmmss)</td>
<td>Current Date &amp; Time</td>
</tr>
<tr>
<td><strong>Date &amp; Time</strong><br />
{1 bytes}</td>
<td>YEAR</td>
<td>1900 &#8211; 2155</td>
<td>Global Only<br />
(YYYY)</td>
<td>NULL<br />
["0000" if NOT NULL]</td>
</tr>
</tbody>
</table>
<p><strong>Notes:</strong></p>
<ul>
<li><sup>1</sup> Storage will be # of characters or bytes, plus byte(s) to record length.</li>
<li><sup>2</sup> These String data types are NOT case sensitive, unless given the &#8220;binary&#8221; attribute or have a case-sensitive CHARACTER SET collation.</li>
<li>&#8220;E&#8221; is an abbreviation for &#8220;exponent&#8221;.  E18 means move the decimal over 18 places (search &#8220;scientific notation&#8221;).</li>
<li>SERIAL DEFAULT VALUE <em>attribute</em> is an alias for &#8220;AUTO_INCREMENT NOT NULL UNIQUE&#8221;.</li>
<li>SERIAL <em>data type</em> is a synonym for &#8220;BIGINT UNSIGNED AUTO_INCREMENT NOT NULL UNIQUE&#8221;.</li>
<li>BOOL and BOOLEAN <em>data types</em> are synonyms for TINYINT(1).</li>
<li>REAL[(M,D)] and DOUBLE PRECISION[(M,D)] <em>datatypes</em> are synonyms for DOUBLE[(M,D)].</li>
<li>REAL_AS_FLOAT <em>system variable</em> can make REAL[(M,D)] a synonym for FLOAT[(M,D)].</li>
<li>&#8220;UNSIGNED ZEROFILL&#8221; <em>attributes</em>: ZEROFILL means if you specify an M value for an integer, it will be padded with zeros to fill up the M spaces. Ex: M=6, integer=247, display=&#8221;000247&#8243;. UNSIGNED means no negative values and often expands your range.</li>
<li>Corresponding non-binary and binary string types:
<ul>
<li>CHAR vs. BINARY</li>
<li>VARCHAR vs. VARBINARY</li>
<li>TEXT vs. BLOB</li>
</ul>
</li>
</ul>
<p>Several of the data types used by MySQL are legacy types, which means that they are based upon data types used during the evolution of relational databases. That is why there appears to be a lot of overlap among different data types.</p>
<p><strong>What is a BLOB?</strong><br />
This is one of the first questions that comes up with anyone that is new to relational databases. A BLOB is a binary large object that can hold a variable amount of data. It is not restricted to text characters. You can store images and other objects using BLOBs. If you just want to store text, then use one of the TEXT data types. But if you want to store objects and data other than text, use a BLOB type. The maximum size for a BLOB is determined by its type, BLOB, MEDIUMBLOB, TINYBLOB or LONGBLOB.</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/08/10/new-mysql-5-test-exam/" rel="bookmark" title="08/10/2009">New Mysql 5 Test / Exam</a> &#8211; 08/10/2009</li>
<li><a href="http://vadimg.com/2009/07/30/difference-between-innodb-and-myisam/" rel="bookmark" title="07/30/2009">Difference Between InnoDB and MyISAM</a> &#8211; 07/30/2009</li>
<li><a href="http://vadimg.com/2010/05/22/inlinereport-report-content-inline/" rel="bookmark" title="05/22/2010">InlineReport &#8211; Report content inline</a> &#8211; 05/22/2010</li>
<li><a href="http://vadimg.com/2011/03/31/yiiframework-co-il-code-is-now-open-sourced/" rel="bookmark" title="03/31/2011">Yiiframework.co.il Code is now open sourced</a> &#8211; 03/31/2011</li>
</ul>
<p><!-- Similar Posts took 6.032 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/30/mysql-data-types-quick-reference-table-mysql-version-5-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Difference Between InnoDB and MyISAM</title>
		<link>http://vadimg.com/2009/07/30/difference-between-innodb-and-myisam/</link>
		<comments>http://vadimg.com/2009/07/30/difference-between-innodb-and-myisam/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 08:56:09 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[השוואות]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[difference]]></category>
		<category><![CDATA[InooDB]]></category>
		<category><![CDATA[MyISAM]]></category>
		<category><![CDATA[mysql 5]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=401</guid>
		<description><![CDATA[After reading Tapos Blog post about the differences between InnoDB and MyISAM database engines i found out that InnoDB does not only support row level locking but more then that, By doing a small fast research i came to those main differences: The big difference between MySQL Table Type MyISAM and InnoDB is that InnoDB [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left; direction:ltr;">After reading <a href="http://tapos.wordpress.com/2008/01/10/difference-between-innodb-and-myisam/" target="_blank">Tapos Blog post</a> about the differences between InnoDB and MyISAM database engines i found out that InnoDB does not only support row level locking but more then that, By doing a small fast research i came to those main differences:</p>
<p style="text-align: left;direction:ltr;"><span id="more-401"></span></p>
<ul style="text-align: left; direction:ltr;">
<li>The big difference between MySQL Table Type MyISAM and InnoDB is that InnoDB supports transaction</li>
<li>InnoDB is for high volume, high performance</li>
<li>MYISAM does not support the foreign key constraint but InnoDB support it.</li>
<li>MYISAM is faster then the InnoDB but in case of perforing the count operation it takes more time then the InnoDB.</li>
<li>MYISAM occupies less memory sapce for tables rather than InnoDB tables.</li>
</ul>
<p style="text-align: left;direction:ltr;">Ultimately i think for a high level application InnoDB should be used. Otherwise MyISAM should do the job quite well.</p>
<p style="text-align: left;direction:ltr;">If you would like to get a little more information about the performance of the two then there was a benchmark done <a href="http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/" target="_blank">here</a> that shows some good results.</p>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/" rel="bookmark" title="11/17/2010">PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</a> &#8211; 11/17/2010</li>
</ul>
<p><!-- Similar Posts took 3.025 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/30/difference-between-innodb-and-myisam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(IM) Custom Forum Blocks For IPB 3</title>
		<link>http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/</link>
		<comments>http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 08:16:28 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[פורומים]]></category>
		<category><![CDATA[custom forum blocks]]></category>
		<category><![CDATA[ipb 3]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=357</guid>
		<description><![CDATA[File Name: (IM) Custom Forum Blocks 1.3 Author: Vince Category: Application Description With this modification you will be able to add custom blocks that will display certain information in them that you will decide. Each block will have it&#8217;s own title and content, You will be able to set which groups can see each block, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left; direction: ltr;"><strong>File Name</strong>: (IM) Custom Forum Blocks 1.3<br />
<strong>Author</strong>: Vince<br />
<strong>Category</strong>: Application</p>
<p style="text-align: left;direction:ltr;"><strong>Description</strong></p>
<p style="text-align: left;direction:ltr;">With this modification you will be able to add custom blocks that will display certain information in them that you will decide.<br />
Each block will have it&#8217;s own title and content, You will be able to set which groups can see each block, What place you would like to place the<br />
block (Top, Right, Left, Bottom), In what pages you would like <strong>And/Or</strong> wouldn&#8217;t like to display the block, The ordering of the blocks that will be displayed to the user.</p>
<p style="text-align: left;direction:ltr;">What kind of template the block will use (Blank, Category Template, Hook Template), Turning each block on/off, Being able to parse both PHP &amp; JS code inside the content of the block along with regular HTML, Or using the IPB full editor (or mixing between the two), Being able to set the width of each column (Middle, Left, Right).</p>
<p style="text-align: left;direction:ltr;">Which columns will be displayed, If members can hide the left and right columns (using JS) and what groups of members if that setting is allowed, Importing &amp; Exporting of all blocks or just some of them, Automatically get notified when ever there is an update available for the modification.</p>
<p style="text-align: left;direction:ltr;">A tool is also available to help you solve SEO urls into regular $_GET['...'] variables to add them into the include/exclude block exceptions area, Previewing the block from the ACP before actually putting it online and Drag &amp; Drop reordering.</p>
<p style="text-align: left;direction:ltr;"><strong>With this you can display the blocks any were you would like.</strong></p>
<p style="text-align: left;direction:ltr;"><strong>Quick Feature List</strong></p>
<ul style="text-align: left;direction:ltr;">
<li>Turn block on/off</li>
<li>Drag &amp; Drop ordering</li>
<li>Split blocks into columns around the entire forum layout</li>
<li>Display blocks any were in the board</li>
<li>Group visibility per block</li>
<li>Select the block position in the page (Top, Left, Right, Bottom)</li>
<li>Block template style (Blank, Category, Hook)</li>
<li>Include block in certain pages</li>
<li>Exclude block in certain pages</li>
<li>Parse PHP inside block</li>
<li>Parse JS inside block</li>
<li>Switch between simple editor and IPB full editor</li>
<li>Preview block from ACP</li>
<li>Import blocks</li>
<li>Export blocks</li>
<li>hide certain blocks as a setting</li>
<li>Change the width of each block and the middle layout of the forum</li>
<li>Allow certain groups to toggle the visibilty of the left and right columns</li>
<li>JS based toggle right and left columns visibility</li>
<li>Link resolver &#8211; From SEO links to a sanitized links to use in the block include/exclude exceptions</li>
<li>Update checker</li>
</ul>
<p style="text-align: left;direction:ltr;"><strong>Premade Blocks</strong></p>
<p style="text-align: left;direction:ltr;">In addition to the entire system there are dozens of pre made blocks that come with this modification for you to just impor them with a click of a button and you will have all the blocks you had before and more.</p>
<p style="text-align: left;direction:ltr;">A quick list of the avilable blocks that come with the modification</p>
<ul style="text-align: left;direction:ltr;">
<li>MetaCafe Videos &#8211; Example of using the metacafe videos inside a block</li>
<li>Youtube Video &#8211; Example of using the youtube videos inside a block</li>
<li>Who&#8217;s Chatting &#8211; Display who is chatting block (Parachat, etc&#8230;)</li>
<li>Top Posters &#8211; Display top posters</li>
<li>Mini Calendar &#8211; Display a mini calendar</li>
<li>Displayed Only inside forums &#8211; A custom block that uses the include exception to be displayed only inside any forum</li>
<li>Custom Block &#8211; A custom block that uses IPB Editor</li>
<li>Watched Items &#8211; Watched items (Forum, Topics)</li>
<li>Latest Status Updates &#8211; Latest members status updates</li>
<li>Recent Topic &#8211; Recent topics</li>
<li>Google ads &#8211; An example on using google ads</li>
</ul>
<p style="text-align: left;direction:ltr;">In order to install them just import the XML file that came with this modification using the import tool in the custom forum blocks application.</p>
<p style="text-align: left;direction:ltr;">Screenshots:</p>

<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/acpaddblock/' title='acpaddblock'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/acpaddblock-150x150.jpg" class="attachment-thumbnail" alt="acpaddblock" title="acpaddblock" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/acpaddblockeditor/' title='acpaddblockeditor'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/acpaddblockeditor-150x150.jpg" class="attachment-thumbnail" alt="acpaddblockeditor" title="acpaddblockeditor" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/acplinkresolver/' title='acplinkresolver'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/acplinkresolver-150x150.jpg" class="attachment-thumbnail" alt="acplinkresolver" title="acplinkresolver" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/acpmainview/' title='acpmainview'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/acpmainview-150x150.jpg" class="attachment-thumbnail" alt="acpmainview" title="acpmainview" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/acpsetting/' title='acpsetting'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/acpsetting-150x150.jpg" class="attachment-thumbnail" alt="acpsetting" title="acpsetting" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/acpupdatechecker/' title='acpupdatechecker'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/acpupdatechecker-150x150.jpg" class="attachment-thumbnail" alt="acpupdatechecker" title="acpupdatechecker" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/boardview/' title='boardview'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/boardview-150x150.jpg" class="attachment-thumbnail" alt="boardview" title="boardview" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/forumfullexample/' title='forumfullexample'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/forumfullexample-150x150.jpg" class="attachment-thumbnail" alt="forumfullexample" title="forumfullexample" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/forumsview/' title='forumsview'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/forumsview-150x150.jpg" class="attachment-thumbnail" alt="forumsview" title="forumsview" /></a>
<a href='http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/fullforum/' title='fullforum'><img width="150" height="150" src="http://vadimg.com/wp-content/uploads/2009/07/fullforum-150x150.jpg" class="attachment-thumbnail" alt="fullforum" title="fullforum" /></a>

<p style="text-align: left;direction:ltr;"><strong>NEW!!! Screen Cast!!<br />
</strong><br />
<a href="http://www.vadimg.co.il/previews/customforumblocks/index.html" target="_blank">Click Here</a></p>
<p style="text-align: left;direction:ltr;">For more information please visit:</p>
<p style="text-align: left;direction:ltr;"><a href="http://www.invisionmodding.com/index.php?showtopic=40101" target="_blank">InvisionModding.com</a></p>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 3.022 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/28/im-custom-forum-blocks-for-ipb-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Speed up a web site by enabling Apache file compression</title>
		<link>http://vadimg.com/2009/07/28/speed-up-a-web-site-by-enabling-apache-file-compression/</link>
		<comments>http://vadimg.com/2009/07/28/speed-up-a-web-site-by-enabling-apache-file-compression/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 07:49:59 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[כללי]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[compress]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=360</guid>
		<description><![CDATA[Speed up page load times by automatically compressing CSS, HTML, and JavaScript files in Apache. Compressed files are smaller and faster to send. Apache 1.x and 2.x can automatically compress files, but neither one comes with a compressor enabled by default. Enabling compression reduces CSS, HTML, and JavaScript file sizes by 55-65% and speeds up [...]]]></description>
			<content:encoded><![CDATA[<p style="direction: ltr; text-align: left;">
<p style="text-align: left;">Speed up page load times by automatically compressing CSS, HTML, and JavaScript files in Apache. Compressed files are smaller and faster to send.</p>
<p style="text-align: left;">Apache 1.x and 2.x can automatically compress files, but neither one comes with a compressor enabled by default. Enabling compression reduces CSS, HTML, and JavaScript file sizes by 55-65% and speeds up overall page load times by 35-40%.</p>
<p style="text-align: left;">Apache uses plug-in modules to add functionality. For Apache 1.x, use the free mod_gzip module to compress files. For Apache 2.x, use mod_gzip or the built-in mod_deflate module.</p>
<p style="text-align: left;">The mod_gzip module can be used with Apache 1.x or 2.x, but it doesn’t come with either Apache distribution. You’ll need to download and install it separately.</p>
<p style="text-align: left;">Download the zip file containing ApacheModuleGzip.dll from <a href="http://sourceforge.net/projects/mod-gzip" target="_blank">SourceForge</a>.</p>
<p style="text-align: left;">Move ApacheModuleGzip.dll to your Apache modules folder (typically “c:Program FilesApache GroupApachemodules”).<br />
Edit your server configuration file using a text editor like NotePad (typically “c:Program FilesApache GroupApacheconfhttpd.conf”). Add the following line to your server configuration file as the last loaded module:</p>
<p style="text-align: left;">
<pre class="brush: php">LoadModule gzip_module modules/ApacheModuleGzip.dll</pre>
</p>
<p style="text-align: left;">Add the following lines to your server configuration file or to a site’s “.htaccess” file:</p>
<p style="text-align: left;">
<pre class="brush: php">
&lt;IfModule mod_gzip.c&gt;
mod_gzip_on       Yes
mod_gzip_dechunk  Yes
mod_gzip_item_include file      .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler   ^cgi-script$
mod_gzip_item_include mime      ^text/.*
mod_gzip_item_include mime      ^application/x-javascript.*
mod_gzip_item_exclude mime      ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
&lt;/IfModule&gt;
</pre>
<p style="text-align: left;">Restart Apache.</p>
<p style="text-align: left;">The “LoadModule” line in the configuration file makes the module ready, while the other lines configure and enable it. Put these other lines in the server’s configuration file to affect all sites served by the web server. Or put them within a site’s “VirtualHost” block or in its own “.htaccess” file to affect only that site.</p>
<p style="text-align: left;">The “mod_gzip_on” line enables the module. The “mod_gzip_dechunk” line instructs the module to handle bursty (chunked) output from Perl or PHP scripts (such as the Drupal content management system).</p>
<p style="text-align: left;">The remaining lines tell the module to compress files with .htm, .html, .txt, .css, .js, .php, and .pl file name extensions, the output of CGI scripts, and any output that is text or JavaScript, but not images. The last line tells the module to skip compressing content that is already compressed.</p>
<p style="text-align: left;">Enable file compression using mod_deflate</p>
<p style="text-align: left;">The mod_deflate module comes with Apache 2.x. All you need to do is enable it.</p>
<p style="text-align: left;">Add the following lines to your server configuration file or to a site’s “.htaccess” file:</p>
<p style="text-align: left;">
<pre class="brush: php">
&lt;Location /&gt;
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI
.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI
.(?:exe|t?gz|zip|gz2|sit|rar)$ no-gzip dont-vary
&lt;/Location&gt;
</pre>
<p style="text-align: left;">Restart Apache.</p>
<p style="text-align: left;">Put the configuration lines in the server’s configuration file to affect all sites served by the web server. Or put them within a site’s “VirtualHost” block or in its “.htaccess” file to affect only that site.</p>
<p style="text-align: left;">The “SetOutputFilter” line enables the module.</p>
<p style="text-align: left;">The next two lines instruct the module to skip compressing image files (.gif, .jpg, .jpeg, .png), executables (.exe), and compressed files (.gz, .tgz, .zip, .gz2, .sit, .rar). Everything else gets compressed</p>
<p style="text-align: left;"><strong>What does it do?</strong></p>
<p style="text-align: left;">The mod_gzip and mod_deflate modules both add file compression features to Apache. When enabled and configured, text-based files and script output is automatically compressed before it is sent to the visitor’s browser. While the effort to compress a file slows down the web server, this slow down is easily offset by the time saved to send the much smaller compressed file. This is particularly true when the server or the site visitor have a slow network connection.</p>
<p style="text-align: left;">Even with file compression enabled and configured, Apache always checks first to see if a visitor’s browser can handle compressed files. Only the oldest web browsers cannot, but if the visitor is using an old browser Apache will skip file compression and send an uncompressed file.</p>
<p style="text-align: left;"><strong>How well does it work?</strong></p>
<p style="text-align: left;">I benchmarked the effect of file compression on two representative test sites: a simple site with a basic page layout, and a complex site with a complex page layout (see my Specifications for Drupal web site testing). Both sites use the Drupal content management system. Both sites have no other performance improvements (e.g., no PHP script cache, no MySQL query cache, and no Drupal page cache or CSS file aggregation). Load times are for each site’s home page, including HTML, CSS, JavaScript, and images. Tests simulated a web page uploaded over a 64Kbps cable modem, such as that used to serve small web sites from a home or small business.</p>
<p style="text-align: left;"><strong>With file compression, the total file size is reduced by 55-65%</strong>.</p>
<p style="text-align: left;"><img class="aligncenter" src="http://nadeausoftware.com/sites/NadeauSoftware.com/files/File_compression_plot_page_size.jpg" alt="" width="300" height="210" /></p>
<p style="text-align: left;"><strong>The total page load times improved by 35-40%</strong>.</p>
<p style="text-align: left;"><img class="aligncenter" src="http://nadeausoftware.com/sites/NadeauSoftware.com/files/File_compression_plot_load_time.jpg" alt="" width="300" height="210" /></p>
<p style="text-align: left;">The simple and complex web sites both benefit substantially from file compression. The complex site has a fancier home page that requires more HTML and CSS, which compresses well. But the complex site also requires more server-side effort to build pages using Drupal. The page load times for the complex site are then much higher than for the simple site, and file compression has less impact on a percentage basis on speeding up the site.</p>
<p style="text-align: left;"><strong>When doesn’t it work?</strong></p>
<p style="text-align: left;">All current web browsers support compression, and these file compression Apache modules work well. They are unlikely to require your further attention once enabled.</p>
<p style="text-align: left;">According to the mod_gzip documentation, very old web browsers prior to Internet Explorer 4, Netscape 6, and Opera 5 do not properly support compressed files. Fortunately, according to monthly browser statistics reported by W3schools.com, these old browsers dropped below 1% market share way back in 2003. While you can configure the compression modules to handle these browsers specially, it hardly seems worth the effort.</p>
<p style="text-align: left;">Internet Explorer 5.5 and 6 had a rare problem with compressed JavaScript files. A patch was distibuted as a service pack back in 2002. It is unlikely that unpatched IE 6 browsers remain a significant part of the user base any more.</p>
<p style="text-align: left;"><strong>What else could be used?</strong></p>
<p style="text-align: left;">PHP has optional obj_gzhandler and zlib output handlers that can automatically compress all data sent from a PHP program. Unfortunately, if the PHP program itself compresses its data (and many of them do), then these output handlers will erroneously compress it a second time. The doubly-compressed data is sent to the visitor’s browser, where it is uncompressed only once, producing the original still-compressed data that then gets displayed as a garbled mess. Since PHP’s output handlers can’t be configured to work properly, make sure that they are disabled by editing your “php.ini” file and setting output_handler to empty and zlib.output_compression to Off. These are the default settings anyway.</p>
<p style="text-align: left;"><strong>Conclusions</strong></p>
<p style="text-align: left;">Enabling a file compression module in Apache provides a huge 35-40% page load time improvement. No other single configuration change I’ve tested has worked as well. Enabling compression should be the first performance change made to any web site.</p>
<p style="text-align: left;"><a href="http://nadeausoftware.com/node/33" target="_blank">Source</a>.</p>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/09/24/apache-rewrite-rules-http-to-https-force-ssl/" rel="bookmark" title="09/24/2009">Apache rewrite rules &#8211; Http to Https &#8211; Force SSL</a> &#8211; 09/24/2009</li>
<li><a href="http://vadimg.com/2009/08/05/mod_rewrite-tips-and-tricks-are-lot-of-htaccess-rewrite-examples/" rel="bookmark" title="08/05/2009">Mod_Rewrite Tips and Tricks are lot of .htaccess rewrite examples</a> &#8211; 08/05/2009</li>
</ul>
<p><!-- Similar Posts took 5.234 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/28/speed-up-a-web-site-by-enabling-apache-file-compression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii &#8211; PHP Coding Standards (draft)</title>
		<link>http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/</link>
		<comments>http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 20:49:23 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[coding standards]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=342</guid>
		<description><![CDATA[Taken from the Zend Framework PHP coding standards, The document was altered and modified to use with Yii framework. If you see anything that needs improvement let me know and i will update it. Yii &#8211; PHP Coding Standards (draft) Scope This document provides the coding standards and guidelines for developers and teams working together [...]]]></description>
			<content:encoded><![CDATA[<div style="direction: ltr; text-align: left;">
<div style="text-align: left; direction: ltr;">Taken from the Zend Framework PHP coding standards, The document was altered and modified to use with Yii framework. If you see anything that needs improvement let me know and i will update it.</div>
<div style="text-align: left; direction: ltr;"><span id="more-342"></span></div>
<div style="text-align: left; direction: ltr;">
<h2>Yii &#8211; PHP Coding Standards (draft)</h2>
</div>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Scope</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">This document provides the coding standards and guidelines for developers and teams working together on projects. The subjects covered are:</span></p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">PHP File Formatting</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Naming Conventions</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Coding Style</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Inline Documentation</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Errors and Exceptions</span></li>
</ul>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Goals"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Goals</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Good coding standards are important in any development project, particularly when multiple developers are working on the same project. Having coding standards helps to ensure that the code is of high quality, has fewer bugs, and is easily maintained.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Abstract goals we strive for:</span></p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">extreme simplicity</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Tool friendliness, such as use of method      signatures, constants, and patterns that support IDE tools and      auto-completion of method, class, and constant names.</span></li>
</ul>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When considering the goals above, each situation requires an examination of the circumstances and balancing of various trade-offs.</span></p>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">PHP File Formatting</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-General"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">General</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For files that contain only PHP code, the closing tag (&#8220;?&gt;&#8221;) is to be omitted. It is not required by PHP, and omitting it prevents trailing whitespace from being accidentally injected into the output.</span></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Important</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Inclusion of   arbitrary binary data as permitted by __HALT_COMPILER () is prohibited from   any PHP file or files derived from them. Use of this feature is only   permitted for special installation scripts.</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Indentation"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Indentation</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Use an indent of 4 spaces with no tab characters. Editors should be configured to treat tabs as spaces in order to prevent injection of tab characters into the source code.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-MaximumLineLeng"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Maximum Line Length</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The target line length is 80 characters; i.e., developers should aim keep code as close to the 80-column boundary as is practical. However, longer lines are acceptable. The maximum length of any line of PHP code is 120 characters.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-LineTermination"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Line Termination</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Line termination is the standard way for UNIX text files. Lines must end only with a linefeed (LF). Linefeeds are represented as ordinal 10, or hexadecimal 0x0A.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Do not use carriage returns (CR) like Macintosh computers (0x0D).</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Do not use the carriage return/linefeed combination (CRLF) as Windows computers (0x0D, 0x0A).</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Lines should not contain trailing spaces. In order to facilitate this convention, most editors can be configured to strip trailing spaces, such as upon a save operation.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-NamingConventio"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Naming Conventions</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-AbstractionsUse"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Abstractions Used in API (Class Interfaces)</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When creating an API for use by application developers if application developers must identify abstractions using a compound name, separate the names using underscores, not camelCase. For example, the name used for the MySQL PDO driver is &#8216;pdo_mysql&#8217;, not &#8216;pdoMysql&#8217;. When the developer uses a string, normalize it to lowercase. Where reasonable, add constants to support this (e.g. PDO_MYSQL).</span></p>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Classes</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The Yii Framework employs a class naming convention whereby the names of the classes directly map to the directories in which they are stored. The root level directory of the Yii Framework is the &#8220;framework/&#8221; directory, under which all classes are stored hierarchically.</span></p>
<pre><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Class names may only contain alphanumeric characters. Numbers are permitted in class names but are discouraged. Dot (.) is only permitted in place of the path separator. For example, the filename "framework/web/CController.php" must map to the class name "CController".</span></pre>
<pre><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Yii uses path aliases extensively. A path alias is associated with a directory or file path. It is specified in dot syntax, similar to that of widely adopted namespace format:</span></pre>
<pre><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">RootAlias.path.to.target</span></pre>
<pre><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">* system: refers to the Yii framework directory; </span></pre>
<pre><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">* application: refers to the application's base directory; </span></pre>
<pre><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">* webroot: refers to the directory containing the entry script file. This alias has been available since version 1.0.3</span></pre>
<pre><span style="font-size: 11pt; font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">It will be mapped under the Yii framework as ‘system.web.ccontroller’ using the Yii:import method. </span></pre>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">If a class name is comprised of more than one word, the first letter of each new word must be capitalized. Successive capitalized letters are not allowed; e.g., a class &#8220;Test_CLASS&#8221; is not allowed, while &#8220;Test_Class&#8221; is acceptable.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Yii Framework classes that are authored by Yii or one of the participating partner companies and distributed with the Framework must always start with the letter &#8220;C” and must be stored under the &#8220;framework/&#8221; directory hierarchy accordingly.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">These are examples of acceptable names for classes:</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">CController</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">My_Class</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Test_Class</span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Important</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Code that   operates with the framework but is not part of the framework, such as code   written by a framework end-user and not Yii or one of the framework&#8217;s partner   companies, must never start with &#8220;C”</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Interfaces"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Interfaces</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Interface classes must follow the same conventions as other classes (see above), but must end with &#8220;_Interface&#8221;, such as in these examples:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">My_Class_Interface </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Filenames"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Filenames</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For all other files, only alphanumeric characters, underscores, and the dash character (&#8220;-&#8221;) are permitted. Spaces are prohibited.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Any file that contains any PHP code must end with the extension &#8220;.php&#8221; (except View scripts, which end in &#8220;.phtml&#8221; by default). These examples show the acceptable filenames for containing the class names from the examples in the section above:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">My/Class.php </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Test/Controller/Front.php </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Site/View/Helper/FormRadio.php </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">File names must follow the mapping to class names described above.</span></p>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Functions and Methods</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Function names may only contain alphanumeric characters. Underscores are not permitted. Numbers are permitted in function names but are discouraged.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Function names must always start with a lowercase letter. When a function name consists of more than one word, the first letter of each new word must be capitalized. This is commonly called the &#8220;camelCase&#8221; method.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Verbosity is encouraged. Function names should be as illustrative as is practical to enhance understanding.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">These are examples of acceptable names for functions:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">filterInput() </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">getElementById() </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">widgetFactory() </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For object-oriented programming, accessors for object members should always be prefixed with either &#8220;get&#8221; or &#8220;set&#8221;. When using design patterns, such as the Singleton or Factory patterns, the name of the method should contain the pattern name where practical to make the pattern more readily recognizable.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Though function names may not contain the underscore character, class methods that are declared as protected or private must begin with a single underscore, as in the following example:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class Foo_Bar </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> protected function _fooBar() </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // &#8230; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> } </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Functions in the global scope, or &#8220;floating functions,&#8221; are permitted but discouraged. It is recommended that these functions be wrapped in a class and declared static.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Functions or variables declared with a &#8220;static&#8221; scope in a class generally should not be &#8220;private&#8221;, but protected instead. Use &#8220;final&#8221; if the function should not be extended.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-OptionalParamet"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Optional Parameters</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Use &#8220;null&#8221; as the default value instead of &#8220;false&#8221;, for situations like this:</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">public function foo($required, $optional = null)</span></p>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When</span></strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> $optional does not have or need a particular default value.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">However, if an optional parameter is boolean, and its logical default value should be true, or false, then using true or false is acceptable.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Variables"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Variables</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Variable names may only contain alphanumeric characters. Underscores are not permitted. Numbers are permitted in variable names but are discouraged.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For class member variables that are declared with the private or protected construct, the first character of the variable name must be a single underscore. This is the only acceptable usage of an underscore in a variable name. Member variables declared as &#8220;public&#8221; may never start with an underscore. For example:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class Foo_Bar </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> protected $_bar; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Like function names, variable names must always start with a lowercase letter and follow the &#8220;camelCase&#8221; capitalization convention.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Verbosity is encouraged. Variable names should always be as verbose as practical. Terse variable names such as &#8220;$i&#8221; and &#8220;$n&#8221; are discouraged for anything other than the smallest loop contexts. If a loop contains more than 20 lines of code, variables for such indices or counters need to have more descriptive names.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Constants"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Constants</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Constants may contain both alphanumeric characters and the underscore. Numbers are permitted in constant names.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Constant names must always have all letters capitalized.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">To enhance readability, words in constant names must be separated by underscore characters. For example, &#8220;EMBED_SUPPRESS_EMBED_EXCEPTION&#8221; is permitted but &#8220;EMBED_SUPPRESSEMBEDEXCEPTION&#8221; is not.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Constants must be defined as class members by using the &#8220;const&#8221; construct. Defining constants in the global scope with &#8220;define&#8221; is permitted but discouraged.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-BooleansandtheN"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Booleans and the NULL Value</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Unlike PHP&#8217;s documentation, the Yii Framework uses lowercase for both boolean values and the &#8220;null&#8221; value.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-CodingStyle"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Coding Style</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-PHPCodeDemarcat"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">PHP Code Demarcation</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">PHP code must always be delimited by the full-form, standard PHP tags (although you should see the note about </span><a href="http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+%28draft%29#PHPCodingStandard%28draft%29-General"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; color: windowtext; text-decoration: none;">the closing PHP tag</span></a><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">):</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">&lt;?php </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">?&gt; </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Short tags are never allowed.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Strings"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Strings</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-StringLiterals"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">String Literals</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When a string is literal (contains no variable substitutions), the apostrophe or &#8220;single quote&#8221; must always used to demarcate the string:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$a = &#8216;Example String&#8217;; </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-StringLiteralsC"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">String Literals Containing Apostrophes</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When a literal string itself contains apostrophes, it is permitted to demarcate the string with quotation marks or &#8220;double quotes&#8221;. This is especially encouraged for SQL statements:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$sql = &#8220;SELECT `id`, `name` from `people` WHERE `name`=&#8217;Fred&#8217; OR `name`=&#8217;Susan&#8217;&#8221;; </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The above syntax is preferred over escaping apostrophes.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-VariableSubstit"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Variable Substitution</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Variable substitution is permitted using either of these two forms:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$greeting = &#8220;Hello $name, welcome back!&#8221;; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$greeting = &#8220;Hello {$name}, welcome back!&#8221;; </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For consistency, this form is not permitted:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$greeting = &#8220;Hello ${name}, welcome back!&#8221;; </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-StringConcatena"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">String Concatenation</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Strings may be concatenated using the &#8220;.&#8221; operator. A space must always be added before and after the &#8220;.&#8221; operator to improve readability:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$company = ‘This’   . ‘ is’ . ‘ a test’; </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When concatenating strings with the &#8220;.&#8221; operator, it is permitted to break the statement into multiple lines to improve readability. In these cases, each successive line should be padded with whitespace such that the &#8220;.&#8221; operator is aligned under the &#8220;=&#8221; operator:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$sql = &#8220;SELECT `id`, `name` FROM `people` &#8221; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> <span> </span> . &#8220;WHERE `name` = &#8216;Susan&#8217; &#8221; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> <span> </span>. &#8220;ORDER BY `name` ASC &#8220;; </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Arrays"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Arrays</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-NumericallyInde"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Numerically Indexed Arrays</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Negative numbers are not permitted as array indices.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">An indexed array may be started with any non-negative number, however this is discouraged and it is recommended that all arrays have a base index of 0.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When declaring indexed arrays with the array construct, a trailing space must be added after each comma delimiter to improve readability:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$sampleArray = array(1, 2, 3, ‘test’,   ‘Yii’); </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">It is also permitted to declare multi-line indexed arrays using the array construct. In this case, each successive line must be padded with spaces such that beginning of each line aligns as shown below:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$sampleArray = array(1, 2, 3, &#8216;Zend&#8217;, &#8216;Studio&#8217;, </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> <span> </span> $a, $b, $c, </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> <span> </span>56.44, $d, 500); </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-AssociativeArra"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Associative Arrays</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">When declaring associative arrays with the array construct, it is encouraged to break the statement into multiple lines. In this case, each successive line must be padded with whitespace such that both the keys and the values are aligned:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">$sampleArray = array(&#8216;firstKey&#8217;  =&gt; &#8216;firstValue&#8217;, </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> <span> </span> &#8216;secondKey&#8217; =&gt; &#8216;secondValue&#8217;); </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Classes</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-ClassDeclaratio"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Class Declarations</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Classes must be named by following the naming conventions.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The brace is always written on the line underneath the class name (&#8220;one true brace&#8221; form).</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Every class must have a documentation block that conforms to the phpDocumentor standard.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Any code within a class must be indented the standard indent of four spaces.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Only one class is permitted per PHP file.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Placing additional code in a class file is permitted but discouraged. In these files, two blank lines must separate the class from any additional PHP code in the file.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">This is an example of an acceptable class declaration:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">/**</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Class Docblock Here</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> */ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class Test_Class </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // entire content of class </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // must be indented four spaces </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-ClassMemberVari"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Class Member Variables</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Member variables must be named by following the variable naming conventions.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Any variables declared in a class must be listed at the top of the class, prior to declaring any functions.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The var construct is not permitted. Member variables always declare their visibility by using one of the private, protected, or public constructs. Accessing member variables directly by making them public is permitted but discouraged in favor of accessor methods having the set and get prefixes.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-FunctionsandMet"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Functions and Methods</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Function and Method Declaration</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Functions and class methods must be named by following the naming conventions.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Methods must always declare their visibility by using one of the private, protected, or public constructs.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Following the more common usage in the PHP developer community, static methods should declare their visibility first:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">public static foo() { &#8230; } </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">private static bar() { &#8230; } </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">protected static goo() { &#8230; } </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">As for classes, the opening brace for a function or method is always written on the line underneath the function or method name (&#8220;one true brace&#8221; form). There is no space between the function or method name and the opening parenthesis for the arguments.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">This is an example of acceptable class method declarations:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">/**</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Class Docblock Here</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> */ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class Bar_Foo </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> /**</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Method Docblock Here</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> */ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> public function sampleMethod($a) </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // entire content of function </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // must be indented four spaces </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> } </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> /**</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Method Docblock Here</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> */ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> protected function _anotherMethod() </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // &#8230; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> } </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Please note</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Passing   function or method arguments by reference is only permitted by defining the   reference in the function or method declaration, as in the following example:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">function sampleMethod(&amp;$a) </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Call-time   pass by-reference is prohibited.</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The return value must not be enclosed in parentheses. This can hinder readability and can also break code if a function or method is later changed to return by reference.</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">function foo() </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // WRONG </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> return($this-&gt;bar); </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // RIGHT </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> return $this-&gt;bar; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The use of </span><a href="http://php.net/manual/en/language.oop5.typehinting.php"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; color: windowtext; text-decoration: none;">type hinting</span></a><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> is encouraged where possible with respect to the component design. For example,</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class Test_Component </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> public function foo(SomeInterface $object) </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> {} </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> public function bar(array $options) </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> {} </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Where possible, try to keep your use of exceptions vs. type hinting consistent, and not mix both approaches at the same time in the same method for validating argument types. However, before PHP 5.2, &#8220;Failing to satisfy the type hint results in a fatal error,&#8221; and might fail to satisfy other coding standards involving the use of throwing exceptions. Beginning with PHP 5.2, failing to satisfy the type hint results in an E_RECOVERABLE_ERROR, requiring developers to deal with these from within a custom error handler, instead of using a try..catch block.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-FunctionandMeth"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Function and Method Usage</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Function arguments are separated by a single trailing space after the comma delimiter. This is an example of an acceptable function call for a function that takes three arguments:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">threeArguments(1, 2, 3); </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Call-time pass by-reference is prohibited. Arguments to be passed by reference must be defined in the function declaration.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For functions whose arguments permit arrays, the function call may include the &#8220;array&#8221; construct and can be split into multiple lines to improve readability. In these cases, the standards for writing arrays still apply:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">threeArguments(array(1, 2, 3), 2, 3); </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">threeArguments(array(1, 2, 3, &#8216;Yii’, </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> <span> </span>$a, $b, $c, </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> <span> </span>56.44, $d, 500), 2, 3); </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-ControlStatemen"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Control Statements</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-If/Else/Elseif"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">If / Else / Elseif</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Control statements based on the &#8220;if&#8221;, &#8220;else&#8221;, and &#8220;elseif&#8221; constructs must have a single space before the opening parenthesis of the conditional, and a single space between the closing parenthesis and opening brace.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Within the conditional statements between the parentheses, operators must be separated by spaces for readability. Inner parentheses are encouraged to improve logical grouping of larger conditionals.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The opening brace is written on the same line as the conditional statement. The closing brace is always written on its own line. Any content within the braces must be indented four spaces.</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">if ($a != 2) { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> $a = 2; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">For &#8220;if&#8221; statements that include &#8220;elseif&#8221; or &#8220;else&#8221;, the formatting must be as in these examples:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">if ($a != 2) { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> $a = 2; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} else { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> $a = 7; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">if ($a != 2) { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> $a = 2; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} else if ($a == 3) { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> $a = 4; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} else { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> $a = 7; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">PHP allows for these statements to be written without braces in some circumstances. The coding standard makes no differentiation and all &#8220;if&#8221;, &#8220;elseif&#8221;, or &#8220;else&#8221; statements must use braces.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Use of the &#8220;elseif&#8221; construct is permitted but highly discouraged in favor of the &#8220;else if&#8221; combination.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Switch"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Switch</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Control statements written with the &#8220;switch&#8221; construct must have a single space before the opening parenthesis of the conditional statement, and also a single space between the closing parenthesis and the opening brace.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">All content within the &#8220;switch&#8221; statement must be indented four spaces. Content under each &#8220;case&#8221; statement must be indented an additional four spaces.</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">switch ($numPeople) { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> case 1: </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> break; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> case 2: </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> break; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> default: </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> break; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The construct &#8220;default&#8221; may never be omitted from a &#8220;switch&#8221; statement.</span></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
</td>
<td style="padding: 0.75pt;">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Please note</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">It is   sometimes useful to write a &#8220;case&#8221; statement which falls through to   the next case by not including a &#8220;break&#8221; or &#8220;return&#8221;. To   distinguish these cases from bugs, such &#8220;case&#8221; statements must   contain the comment &#8220;// break intentionally omitted&#8221;.</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-InlineDocumenta"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Inline Documentation</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-DocumentationFo"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Documentation Format</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">All documentation blocks (&#8220;docblocks&#8221;) must be compatible with the phpDocumentor format. Describing the phpDocumentor format is beyond the scope of this document. For more information, visit </span><a href="http://phpdoc.org/"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; color: windowtext; text-decoration: none;">http://phpdoc.org</span></a><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">All source code file written for the Yii Framework or that operates with the framework must contain a &#8220;file-level&#8221; docblock at the top of each file and a &#8220;class-level&#8221; docblock immediately above each class. Below are examples of such docblocks.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The sharp, &#8216;#&#8217;, character should not be used to start comments.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Files"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Files</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Every file that contains PHP code must have a header block at the top of the file that contains these phpDocumentor tags at a minimum:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">/**</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Short description for file</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> *</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Long description for file (if any)&#8230;</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> *</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * LICENSE: Some license information</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> *</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @copyright  2006 Yii</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @license    http://www.gnu.com/license/3_0.txt   PHP License 3.0</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @version    $Id$</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;"></td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @since      1.0.0</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> */ </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Classes"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Classes</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Every class must have a docblock that contains these phpDocumentor tags at a minimum:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">/**</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Short description for class</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> *</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Long description for class (if any)&#8230;</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> *</span></p>
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">*<span> </span>@author author name</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @version    Release: @package_version@</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> */ </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Functions"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Functions</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Every function, including object methods, must have a docblock that contains at a minimum:</span></p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">A description of the function</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">All of the arguments</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">All of the possible return values</span></li>
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">If a function/method may throw an      exception, use &#8220;@throws&#8221;</span></li>
</ul>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0.75pt;" valign="top">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
</td>
<td style="padding: 0.75pt;" colspan="2">
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Please note</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">It is not   necessary to use the &#8220;@access&#8221; tag because the access level is   already known from the &#8220;public&#8221;, &#8220;private&#8221;, or &#8220;protected&#8221;   construct used to declare the function.</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">/**</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * Does something interesting</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> *</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @param  Place    $where  Where something interesting takes place</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @param  integer  $repeat How many times something interesting should happen</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @throws Some_Exception_Class If something interesting cannot happen</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> * @return Status</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> */ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">public function doSomethingInteresting(Place $where, $repeat = 1) </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> // implementation&#8230; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt; background: white none repeat scroll 0% 0%;" colspan="3">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
<p><!--[if !supportMisalignedColumns]--></p>
<tr height="0">
<td style="border: medium none;" width="3"></td>
<td style="border: medium none;" width="20"></td>
<td style="border: medium none;" width="510"></td>
<td style="border: medium none;" width="215"></td>
</tr>
<p><!--[endif]--></tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Require/Include"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Require / Include</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">If a component uses another component, then the using component is responsible for loading the other component. If the use is conditional, then the loading should also be conditional.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The include, include_once, require, and require_once statements should not use parentheses.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Using include, include_once, require, and require_once is acceptable but discouraged in favor for Yii:import();</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-ErrorsandExcept"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Errors and Exceptions</span></strong></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">The Yii Framework codebase must be E_STRICT compliant. Yii Framework code should not emit PHP warning (E_WARNING, E_USER_WARNING), notice (E_NOTICE, E_USER_NOTICE), or strict (E_STRICT) messages when error_reporting is set to E_ALL | E_STRICT.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">See </span><a href="http://www.php.net/errorfunc"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;; color: windowtext; text-decoration: none;">http://www.php.net/errorfunc</span></a><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> for information on E_STRICT.</span></p>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Yii Framework code should not emit PHP errors, if it is reasonably possible. Instead, throw meaningful exceptions. Yii Framework components have Exception class derivatives specifically for this purpose:</span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class CException extends Exception </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{} </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class CController_Exception extends CException </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{} </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class CController_Other_Exception extends CController_Exception </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">It is considered best practice within framework component code that exceptions are instantiated through the traditional new constructor method. </span></p>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Yii::import(‘application.component.exception’);</span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">class Test_Component </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">{ </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> public function foo($condition) </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> if ($condition) { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> throw new    Component_Exception( </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> &#8216;Some meaningful exception message&#8217;); </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> } </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> } </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Some concern was raised about scripts that incur overhead by loading exception classes that are by definition only used in exceptional cases. When an application&#8217;s performance requirements are such that this overhead is an issue, one should use either of two solutions:</span></p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Load the exception class in a traditional      manner, and run the application in an environment that uses a PHP bytecode      cache. A bytecode cache reduces the overhead of loading and parsing PHP      classes that have been used in the environment earlier.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Lazy-load the exception class inside the      code block where the exception is thrown. For example: </span></li>
</ul>
<table class="MsoNormalTable" style="background: white none repeat scroll 0% 0%; width: 100%; margin-left: 0.5in; border-collapse: collapse;" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">if ($condition) { </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> require_once &#8216;Component_Exception.php&#8217;; </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> throw new    Component_Exception( </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> &#8216;Some meaningful exception message&#8217;); </span></p>
</td>
</tr>
<tr>
<td style="padding: 0in 0in 0in 4.7pt;">
<p class="MsoNormal" style="margin: 0.95pt 0in; line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">} </span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Reasonable care should be taken to avoid throwing exceptions except when genuinely appropriate. In general, if a Yii Framework component is asked to perform a duty that it cannot perform in a certain situation (e.g., illegal input, cannot read requested file), then throwing an exception is a sensible course of action. Conversely, if a component is able to perform its requested duty, despite some variance from expected input, then the component should continue with its work, rather than throw an exception.</span></p>
<p class="MsoNormal" style="line-height: normal;"><a name="PHPCodingStandard(draft)-Exceptionbestpr"></a><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Exception best practices</span></strong></p>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Use specific derived exceptions in both throw      and catch. See the following two items:</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Avoid throwing the Exception base class,      or other exception superclass. The more specific the exception, the better      it communicates to the user what happened.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Avoid catching the Exception base class,      or other exception superclass. If a try block might encounter more than      one type of exception, write a separate catch block for each specific      exception, not one catch block for an exception superclass.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Some classes may require you to write more      than one derived exception class. Write as many exception classes as      needed, to distinguish between different types of situations. For example,      &#8220;<em>invalid argument value</em>&#8221; is different from, &#8220;<em>you      don&#8217;t have a needed privilege</em>.&#8221; Create different exceptions to      identify different cases.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Don&#8217;t put important diagnostic information      only in the text of the exception method. Create methods and members in      derived exception classes as needed, to provide information to the catch      block. Create an exception constructor method that takes appropriate      arguments, and populate the members of the class with those arguments.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Don&#8217;t silently suppress exceptions and      allow execution to continue in an erroneous state. If you catch an      exception, either correct the condition or throw a new exception.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Keep implementation-specific exceptions      isolated to the appropriate layer of your application. For instance, don&#8217;t      propagate SQLException out of the data layer code and into business layer      code.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Don&#8217;t use exceptions as a mechanism of      flow control, or to return valid return values from a function.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Clean up resources such as database      connections or network connections. PHP does not support a finally block      as some programming languages do, so either clean up in the catch blocks,      or else design flow control outside the catch block to perform cleanup,      and let execution continue after the catch.</span></li>
</ul>
<ul type="disc">
<li class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">Use documentation from other languages for      other best practices regarding using exceptions. Many of the principles      are applicable, regardless of the language.</span></li>
</ul>
<p class="MsoNormal" style="line-height: normal;"><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;"> </span></p>
<p class="MsoNormal" style="line-height: normal;"><strong><span style="font-family: &quot;Times New Roman&quot;,&quot;serif&quot;;">PHP Error Suppression (@ ) in front of method names, class members and properties is prohibited. </span></strong></p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/" rel="bookmark" title="11/17/2010">PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</a> &#8211; 11/17/2010</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-namespaces/" rel="bookmark" title="10/12/2010">PHP 5.3 Namespaces</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2009/02/11/%d7%a9%d7%a8%d7%a9%d7%95%d7%a8-%d7%a4%d7%95%d7%a0%d7%a7%d7%a6%d7%99%d7%95%d7%aa-%d7%91%d7%9e%d7%97%d7%9c%d7%a7%d7%94/" rel="bookmark" title="02/11/2009">שרשור פונקציות במחלקה</a> &#8211; 02/11/2009</li>
<li><a href="http://vadimg.com/2009/10/29/exceptional-php-introduction-to-exceptions/" rel="bookmark" title="10/29/2009">Exceptional PHP: Introduction to Exceptions</a> &#8211; 10/29/2009</li>
<li><a href="http://vadimg.com/2010/10/11/php-5-3-closures-lambdaanonymous-functions/" rel="bookmark" title="10/11/2010">PHP 5.3 &#8211; Closures &#038; Lambda/Anonymous Functions</a> &#8211; 10/11/2010</li>
</ul>
<p><!-- Similar Posts took 11.091 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii &#8211; Creating a blog in just 30 minutes &#8211; ScreenCast</title>
		<link>http://vadimg.com/2009/07/13/yii-creating-a-blog-in-just-30-minutes-screencast/</link>
		<comments>http://vadimg.com/2009/07/13/yii-creating-a-blog-in-just-30-minutes-screencast/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 08:25:23 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=329</guid>
		<description><![CDATA[This tutorial walks you through the steps of creating a simple blog system using the Yii framework.]]></description>
			<content:encoded><![CDATA[<div style="text-align:left; direction:ltr;">This tutorial walks you through the steps of creating a simple blog system using the Yii framework.</div>
<div style="text-align:left; direction:ltr;"><span id="more-329"></span></div>
<div style="text-align:left; direction:ltr;">
<p><strong>Size:</strong> 84.9MB<br />
<strong>Length:</strong> 00:29:05<br />
<strong>Author:</strong> Pelle ten Cate<br />
<strong>License:</strong> <a href="http://www.yiiframework.com/doc/terms/">Terms of the Yii Documentation</a></p>
<p><img src="http://vadimg.com/wp-content/plugins/flash-video-player/default_video_player.gif" /></p></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/" rel="bookmark" title="07/13/2009">יצירת בלוג בעזרת Yii תוך 30 דקות בלבד &#8211; מדריך וידאו</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2009/12/17/creating-a-yii-widget-for-fckeditor-easier-usage/" rel="bookmark" title="12/17/2009">Creating a Yii widget for FCKeditor easier usage</a> &#8211; 12/17/2009</li>
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/10/10/%d7%91%d7%9c%d7%95%d7%92%d7%99%d7%9d-%d7%98%d7%9b%d7%a0%d7%95%d7%9c%d7%95%d7%92%d7%99%d7%99%d7%9d/" rel="bookmark" title="10/10/2010">בלוגים טכנולוגיים</a> &#8211; 10/10/2010</li>
</ul>
<p><!-- Similar Posts took 7.963 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/13/yii-creating-a-blog-in-just-30-minutes-screencast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>יצירת בלוג בעזרת Yii תוך 30 דקות בלבד &#8211; מדריך וידאו</title>
		<link>http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/</link>
		<comments>http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 08:24:35 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=332</guid>
		<description><![CDATA[מדריך וידאו זה מעביר הדרכה במשך כ 30 דקות על שימוש ב Yii כדי ליצור אפליקציה מלאה, במדריך זה האפליקציה הינה בלוג מלאה. המדריך מעביר הסבר על השימוש ב Yii מהתקנתו במערכת ועד כתיבת הקוד המתאים. גודל: 84.9 מגה בייט אורך: 29:05 דקות יוצר: Pelle ten Cate רישיון: Terms of the Yii Documentation Similar Posts [...]]]></description>
			<content:encoded><![CDATA[<p>מדריך וידאו זה מעביר הדרכה במשך כ 30 דקות על שימוש ב Yii  כדי ליצור אפליקציה מלאה, במדריך זה האפליקציה הינה בלוג מלאה. המדריך מעביר הסבר על השימוש ב Yii מהתקנתו במערכת ועד כתיבת הקוד המתאים.</p>
<p><span id="more-332"></span></p>
<p><strong>גודל</strong>: 84.9 מגה בייט<br />
<strong>אורך</strong>: 29:05 דקות<br />
<strong>יוצר</strong>: Pelle ten Cate<br />
<strong>רישיון</strong>: <a href="http://www.yiiframework.com/doc/terms/">Terms of the Yii Documentation</a></p>
<p><img src="http://vadimg.com/wp-content/plugins/flash-video-player/default_video_player.gif" /><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/07/13/yii-creating-a-blog-in-just-30-minutes-screencast/" rel="bookmark" title="07/13/2009">Yii &#8211; Creating a blog in just 30 minutes &#8211; ScreenCast</a> &#8211; 07/13/2009</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
<li><a href="http://vadimg.com/2010/04/27/fusion-charts-yii-extension/" rel="bookmark" title="04/27/2010">Fusion Charts Yii Extension</a> &#8211; 04/27/2010</li>
<li><a href="http://vadimg.com/2010/03/14/yii-%d7%92%d7%a8%d7%a1%d7%90-1-1-1-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="03/14/2010">Yii גרסא 1.1.1 שוחררה!</a> &#8211; 03/14/2010</li>
<li><a href="http://vadimg.com/2009/07/13/yii-php-coding-standards-draft/" rel="bookmark" title="07/13/2009">Yii &#8211; PHP Coding Standards (draft)</a> &#8211; 07/13/2009</li>
</ul>
<p><!-- Similar Posts took 7.645 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/07/13/%d7%99%d7%a6%d7%99%d7%a8%d7%aa-%d7%91%d7%9c%d7%95%d7%92-%d7%91%d7%a2%d7%96%d7%a8%d7%aa-yii-%d7%aa%d7%95%d7%9a-30-%d7%93%d7%a7%d7%95%d7%aa-%d7%91%d7%9c%d7%91%d7%93-%d7%9e%d7%93%d7%a8%d7%99%d7%9a/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>אשף התקנת מערכות ב PHP</title>
		<link>http://vadimg.com/2009/06/24/%d7%90%d7%a9%d7%a3-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%9e%d7%a2%d7%a8%d7%9b%d7%95%d7%aa-%d7%91-php/</link>
		<comments>http://vadimg.com/2009/06/24/%d7%90%d7%a9%d7%a3-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%9e%d7%a2%d7%a8%d7%9b%d7%95%d7%aa-%d7%91-php/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:54:11 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[wizard]]></category>
		<category><![CDATA[אשף]]></category>
		<category><![CDATA[אשף התקנה]]></category>
		<category><![CDATA[מערכת]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=319</guid>
		<description><![CDATA[הרבה בקשות ושאלות נשאלו בנוגע לאשף התקנה ב PHP כדי להתקין מערכות כתובת ב PHP בצורה פשוטה יותר, בתור מתכנת אחד הדברים העיקרים שאני שם לב אליהם זה הפשטות ונוחות השימוש ללקוח. לכן מתן אשף התקנה פשוט שכל מה שהלקוח צריך זה להריץ אותו כדי להתקין את המערכת שבעבורה הוא שילם הינו גורם חשוב בכל [...]]]></description>
			<content:encoded><![CDATA[<p>הרבה בקשות ושאלות נשאלו בנוגע לאשף התקנה ב PHP כדי להתקין מערכות כתובת ב PHP בצורה פשוטה יותר, בתור מתכנת אחד הדברים העיקרים שאני שם לב אליהם זה הפשטות ונוחות השימוש ללקוח. לכן מתן אשף התקנה פשוט שכל מה שהלקוח צריך זה להריץ אותו כדי להתקין את המערכת שבעבורה הוא שילם הינו גורם חשוב בכל הנוגע לשירות לקוחות.</p>
<p>לכן לקחתי את הזמן לכתוב משהו שאני בעצמי משתמש כיום אשר משמש בתור אשף התקנה, זהו אשף די בסיסי אך עושה את העבודה הדרושה, בכל שלב כמובן תמיד אפשר להוסיף לו עוד אפשרויות שהוא יכול לעשות.</p>
<p>בעזרת האשף הזה ניתן יהיה להריץ שאילתות מסד נתונים ללא הגבלה, כל השאילות נמצאות בקובץ מרוכז אחד ככה שהעריכה הינה קלה ופשוטה.</p>
<p>בנוסף לזה האשף יכתוב לקובץ הגדרות עם כל פרטי המסד ועם פרטים נוספים כגון קישור מלא לאתר ונתיב מלא לאתר שאותו המשתמש יכול לערוך תוך כדי ההתקנה.</p>
<p>כמו כן, האשף הינו מספיק בטוח כדי להריץ אותו על אתרים באוויר מאחר והוא מאפשר הרצה של האשף רק פעם אחת, לאחר ההרצה הראשונה יווצר קובץ נעילה לאשף שרק על ידי מחיקתו ידנית תתאפשר הרצה שנייה שלו.</p>
<p>אחד הדברים שהיו חשובים לי להוסיף זה תצוגת האשף בשפות שונות, לכן באשף זה ניתן לצפות (כברירת מחדל כרגע) בשני שפות אנגלית ועברית, אך הוספה של שפות נוספות הינה קלה במיוחד, זה רק עניין של שכפול קובץ השפה באנגלית או בעברית, מתן שם חדש לקובץ שנוצר שהשם יהווה בעצם את הכותרת של השפה, ולאחר מכן תרגום כל הביטויים בקובץ.<br />
(לדוגמא: אם אנחנו רוצים ליצור שפה חדשה &#8216;ספרדית&#8217; אנחנו נשכפל את הקובץ english.php או hebrew.php איך שנוח אשר נמצאים בתיקיה /installer/data/lang/ ונתן לקובץ המשוכפל החדש שם &#8216;spanish.php&#8217; ככה שהוא ייצג את השפה הספרדית לאחר מכן לתרגם את כל הביטויים בתוך הקובץ החדש שנוצר ולהוסיף אותו לאותו נתיב בו נמצאים שאר השפות לאחר מכן המערכת תאתר אותו אוטומטית ותוסיף לרשימה)</p>
<p>תוספת קטנה שהוספתי זה האפשרות של התצוגה של האשף בשני צדי הדף. זאת אומרת שבשפות עברית ועברית (כמובן שאפשר לעשות את זה לכל שפה אחרת זה עניין של הגדרה של ערך בתוך קובץ השפה) האשף יוצג מימין לשמאל, לכל שאר השפות הוא יוצג משמאל לימין כפי שנהוג.</p>
<p>האשף הינו מעוצב וידידותי למשתמש/לקוח ככה שלא צריך לעבוד קשה על העיצוב שלו. במידה ומשהו מעוניין להרחיב את האפשרויות בו מוזמן לעשות זאת כל עוד הוא משאיר את הזכויות יוצרים במקומם.</p>
<p>דוגמאות:</p>
<p><a href="http://www.vadimg.co.il/wp-content/uploads/2009/06/index-he.jpg" rel="lightbox[319]"><img class="aligncenter size-thumbnail wp-image-309" title="עמוד ראשי" src="http://www.vadimg.co.il/wp-content/uploads/2009/06/index-he-150x150.jpg" alt="עמוד ראשי" width="150" height="150" /></a><a href="http://www.vadimg.co.il/wp-content/uploads/2009/06/database-he.jpg" rel="lightbox[319]"><img class="aligncenter size-thumbnail wp-image-305" title="עמוד פרטי מסד נתונים" src="http://www.vadimg.co.il/wp-content/uploads/2009/06/database-he-150x150.jpg" alt="עמוד פרטי מסד נתונים" width="150" height="150" /></a><a href="http://www.vadimg.co.il/wp-content/uploads/2009/06/databasedone-he.jpg" rel="lightbox[319]"><img class="aligncenter size-thumbnail wp-image-304" title="עמוד הרצת שאילתות מסד נתונים" src="http://www.vadimg.co.il/wp-content/uploads/2009/06/databasedone-he-150x150.jpg" alt="עמוד הרצת שאילתות מסד נתונים" width="150" height="150" /></a><a href="http://www.vadimg.co.il/wp-content/uploads/2009/06/config-he.jpg" rel="lightbox[319]"><img class="aligncenter size-thumbnail wp-image-301" title="פרטי קובץ ההגדרות" src="http://www.vadimg.co.il/wp-content/uploads/2009/06/config-he-150x150.jpg" alt="פרטי קובץ ההגדרות" width="150" height="150" /></a><a href="http://www.vadimg.co.il/wp-content/uploads/2009/06/finish-he.jpg" rel="lightbox[319]"><img class="aligncenter size-thumbnail wp-image-307" title="סיום" src="http://www.vadimg.co.il/wp-content/uploads/2009/06/finish-he-150x150.jpg" alt="סיום" width="150" height="150" /></a></p>
<p>הורדה: <a href="http://www.vadimg.co.il/wp-content/uploads/2009/06/classinstaller-v1.zip">classinstaller-v1</a></p>
<p>ואדים. <img src='http://vadimg.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/06/24/application-installer-wizard-class/" rel="bookmark" title="06/24/2009">Application Installer Wizard Class</a> &#8211; 06/24/2009</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2009/08/13/php-job-position-center-tel-aviv-israel/" rel="bookmark" title="08/13/2009">PHP Job Position &#8211; Center Tel-Aviv, Israel</a> &#8211; 08/13/2009</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
</ul>
<p><!-- Similar Posts took 7.011 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/06/24/%d7%90%d7%a9%d7%a3-%d7%94%d7%aa%d7%a7%d7%a0%d7%aa-%d7%9e%d7%a2%d7%a8%d7%9b%d7%95%d7%aa-%d7%91-php/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Application Installer Wizard Class</title>
		<link>http://vadimg.com/2009/06/24/application-installer-wizard-class/</link>
		<comments>http://vadimg.com/2009/06/24/application-installer-wizard-class/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:41:18 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[php application installer]]></category>
		<category><![CDATA[php class]]></category>
		<category><![CDATA[php installer]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=299</guid>
		<description><![CDATA[Many people were asking about a simple class installer wizard that will do just the basic application installation in PHP, As a developer you would want to make things as simple as possible to the end user, So having an installer that will do all the hard work is something that i find useful and [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: left; direction: ltr;">Many people were asking about a simple class installer wizard that will do just the basic application installation in PHP, As a developer you would want to make things as simple as possible to the end user, So having an installer that will do all the hard work is something that i find useful and even mandatory.</p>
<p>I took the time to write down a simple (yet efficent) installer class. This class allows you to add an unlimited amount of Database queiries for the installer to run.</p>
<p>All the queries are placed in a single file for easier usage. It also writes down a configuration file with the DB information the base url and base path of the application<br />
That is configurable from the installer wizard.</p>
<p>In addition to that it also protects the wizard from being run again by adding a lock file to the installer, And only by manually removing that file from the FTP you could run the wizard again.</p>
<p>One thing i wanted to add here is the ability to view the wizard in different languages, So now you can view the wizard in any language that suppors it.</p>
<p>Adding translation languages is a matter of copying the base language file and translating less then 30 strings of text and you got yourself a wizard that supports your language.</p>
<p>A small adjusment i did is to also support Right-To-Left users and languages so if your language is an RTL language the wizard will display itself from right to left (for Arabic and Hebrew users)</p>
<p>Comes with a nice look &amp; feel to the wizard and not just blank white page with text inputs. If anyone interested in extending it you are free to do so as long as you keep the copyright intact.</p>
<p>Here are some examples:</p>
<p style="text-align: center;"><a href="http://www.vadimg.com/wp-content/uploads/2009/06/index.jpg" rel="lightbox[299]"><img class="aligncenter size-thumbnail wp-image-308" style="border: 0pt none;" title="Index page" src="http://www.vadimg.com/wp-content/uploads/2009/06/index-150x150.jpg" alt="Index page" width="150" height="150" /></a></p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://www.vadimg.com/wp-content/uploads/2009/06/database.jpg" rel="lightbox[299]"><img class="aligncenter size-thumbnail wp-image-302" style="border: 0pt none;" title="Database" src="http://www.vadimg.com/wp-content/uploads/2009/06/database-150x150.jpg" alt="Database" width="150" height="150" /></a><a href="http://www.vadimg.com/wp-content/uploads/2009/06/databasedone.jpg" rel="lightbox[299]"><img class="aligncenter size-thumbnail wp-image-303" style="border: 0pt none;" title="Database Done" src="http://www.vadimg.com/wp-content/uploads/2009/06/databasedone-150x150.jpg" alt="Database Done" width="150" height="150" /></a><a href="http://www.vadimg.com/wp-content/uploads/2009/06/config.jpg" rel="lightbox[299]"><img class="aligncenter size-thumbnail wp-image-300" style="border: 0pt none;" title="config" src="http://www.vadimg.com/wp-content/uploads/2009/06/config-150x150.jpg" alt="config" width="150" height="150" /></a><a href="http://www.vadimg.com/wp-content/uploads/2009/06/finish.jpg" rel="lightbox[299]"><img class="aligncenter size-thumbnail wp-image-306" style="border: 0pt none;" title="finish" src="http://www.vadimg.com/wp-content/uploads/2009/06/finish-150x150.jpg" alt="finish" width="150" height="150" /></a></p>
<p style="text-align: left;">
<p style="text-align: left;">Download: <a href="http://www.vadimg.com/wp-content/uploads/2009/06/classinstaller-v1.zip">classinstaller-v1</a></p>
<p style="text-align: center;">
<p>Vadim. <img src='http://vadimg.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2010/11/17/php-5-oop-text-difference-class-pear-text-class/" rel="bookmark" title="11/17/2010">PHP 5 &#8211; OOP &#8211; Text Difference Class &#8211; PEAR Text Class</a> &#8211; 11/17/2010</li>
<li><a href="http://vadimg.com/2012/03/23/php-facebook-api-version-3-0-facebook-wrapper-facebook-class/" rel="bookmark" title="03/23/2012">PHP Facebook API Version 3.0 | Facebook Wrapper | Facebook Class</a> &#8211; 03/23/2012</li>
<li><a href="http://vadimg.com/2011/12/27/atthevip-com-new-yii-powered-application/" rel="bookmark" title="12/27/2011">AtTheVip.com &#8211; New Yii Powered application</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2010/10/12/php-5-3-late-static-bindings/" rel="bookmark" title="10/12/2010">PHP 5.3 Late Static Bindings</a> &#8211; 10/12/2010</li>
<li><a href="http://vadimg.com/2010/05/05/facebook-php-library-graph-social-plugins-search-posting-and-more/" rel="bookmark" title="05/05/2010">Facebook PHP Class Library &#8211; Graph, Social Plugins, Search, Posting And more</a> &#8211; 05/05/2010</li>
</ul>
<p><!-- Similar Posts took 7.299 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/06/24/application-installer-wizard-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>שימוש ב MICROPAY לשליחת SMS</title>
		<link>http://vadimg.com/2009/06/21/%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-micropay-%d7%9c%d7%a9%d7%9c%d7%99%d7%97%d7%aa-sms/</link>
		<comments>http://vadimg.com/2009/06/21/%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-micropay-%d7%9c%d7%a9%d7%9c%d7%99%d7%97%d7%aa-sms/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 09:08:02 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[אינטגרציה]]></category>
		<category><![CDATA[micropay]]></category>
		<category><![CDATA[MMS]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[חיוב הפוך]]></category>
		<category><![CDATA[שליחת הודעות SMS]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=294</guid>
		<description><![CDATA[הרבה שאלות נשאלו בעבר על שיטות שונות לעבודה עם שליחת SMS ישירות מהאתר. לפני כמה ימים השתמשתי בשירות של http://micropay.co.il/ כדי לבצע את הפעולות הללו. במדריך הבא יוצגו שני פונקציות. האחת תשמש בתור הפונקציה לשליחת הודעת SMS למספר פאלפון אחד או למספר לא מוגבל של מספרי פאלפון בבת אחת, והשנייה תשמש בתור פונקציה לבירור היתרה [...]]]></description>
			<content:encoded><![CDATA[<p>הרבה שאלות נשאלו בעבר על שיטות שונות לעבודה עם שליחת SMS ישירות מהאתר. לפני כמה ימים השתמשתי בשירות של <a href="http://micropay.co.il/" target="_blank">http://micropay.co.il/</a> כדי לבצע את הפעולות הללו. במדריך הבא יוצגו שני פונקציות. האחת תשמש בתור הפונקציה לשליחת הודעת SMS למספר פאלפון אחד או למספר לא מוגבל של מספרי פאלפון בבת אחת, והשנייה תשמש בתור פונקציה לבירור היתרה שלכם בחשבון ה micropay שלכם. ישנם עוד כמה אפשרויות ש micropay מאפשרות כמו חיוב הפוך ושגם אותם אפשר להגדיר בצורה דומה (במידה ויהיה ביקוש אני אשמח לכתוב פונקציה לשימוש בחיוב הפוך).</p>
<h4><strong>פונקציה 1 &#8211; שליחת הודעת SMS</strong></h4>
<pre class="brush: php">
/**
 * Send SMS function call via micropay API
 *
 * @link http://www.micropay.co.il
 * @see http://www.micropay.co.il
 *
 * @param string $message - the message to send (the limit is 70 chars in hebrew and 126 in english)
 * @param array $numbers - array of numbers to send the message to
 * @return error string on failure, array of return values on success
 */
function sendSms($message=&quot;&quot;, array $numbers=array())
{

    # If we don&#039;t have a message return the error
    if(!$message)
    {
        return &quot;אנא ציין הודעה&quot;;
    }

    # No numbers
    if(count($numbers) &lt;= 0)
    {
        return &quot;אנא ציין מספרים לשליחה&quot;;
    }

    # Complie the URL
    $host = &#039;micropay.co.il&#039;;
    $path = &#039;/ExtApi/ScheduleSms.php&#039;;
    $formdata[&#039;uid&#039;] = &#039;XXX&#039;; // the UID number provided by micropay
    $formdata[&#039;un&#039;] = &#039;YYY&#039;; // the UN number provided by micropay, this is your username
    $formdata[&#039;charset&#039;] = &#039;utf-8&#039;;
    $formdata[&#039;post&#039;] = 2;
    $formdata[&#039;from&#039;] = &#039;ZZZZZ&#039;; # Phone number that the SMS will be sent from, By micropay TOS you must put a valid phone number to allow
    # The clients to get back to you if they need to.
    # Message
    $formdata[&#039;msg&#039;] = $message;

    # Make list
    $formdata[&#039;list&#039;] = implode(&#039;,&#039;, preg_replace(&#039;/[^0-9]/&#039;, &#039;&#039;, $numbers));

    $poststring = &#039;&#039;;
    // formatting the request string
    foreach($formdata AS $key =&gt; $val)
    {
        $poststring .= $key . &quot;=&quot; . $val . &quot;&amp;&quot;;
    }
    // strip off trailing ampersand
    $poststring = substr($poststring, 0, -1);

    // init curl connection
    $CR = curl_init();
    curl_setopt($CR, CURLOPT_URL, &quot;http://&quot;.$host.$path);
    curl_setopt($CR, CURLOPT_POST, 1);
    curl_setopt($CR, CURLOPT_FAILONERROR, true);
    curl_setopt($CR, CURLOPT_POSTFIELDS, $poststring);
    curl_setopt($CR, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($CR, CURLOPT_SSL_VERIFYPEER, 0);
    // actual curl execution perfom
    $result = curl_exec( $CR );
    $error = curl_error( $CR );
    // on error - exit with error message
    if( !empty( $error ))
    {
        return $error;
    }
    curl_close( $CR );
    // re-format the string into array

    $answer = array();
    $answer[&#039;query&#039;] = $poststring;
    $response = explode(&#039;&amp;&#039;, $result);
    foreach($response as $key=&gt;$value)
    {
        unset($tmparr);
        $tmparr=explode(&quot;=&quot;,$value);
        $answer[$tmparr[0]]=$tmparr[1];
    }

    # Return
    return $answer;
}
</pre>
<p>השימוש בה הוא פשוט:</p>
<pre class="brush: php">
# Send a message
$message = &quot;some message to send&quot;;
$numbers = array(&#039;050123456789&#039;, &#039;05291837462&#039;);
sendSms($message, $numbers);
</pre>
<h4><strong>פונקציה 2 &#8211; קבלת המאזן שלכם בחשבון של MicroPay</strong></h4>
<h4></h4>
<pre class="brush: php">
/**
 * Get SMS credit from you micropay account
 *
 * @link http://www.micropay.co.il
 * @see http://www.micropay.co.il
 *
 * @return int - the amount left on your account
 */
function getSmsCredit()
{

    $host = &#039;micropay.co.il&#039;;
    $path = &#039;/ExtApi/ScheduleSms.php?get=1&amp;&#039;;
    $formdata[&#039;uid&#039;] = &#039;XXX&#039;; // the UID number provided by micropay
    $formdata[&#039;un&#039;] = &#039;YYY&#039;; // the UN number provided by micropay, this is your username
    $formdata[&#039;act&#039;] = &#039;credit&#039;; // the action which will return the balance in your account

    $poststring = &#039;&#039;;
    // formatting the request string
    foreach($formdata AS $key =&gt; $val)
    {
        $poststring .= $key . &quot;=&quot; . $val . &quot;&amp;&quot;;
    }
    // strip off trailing ampersand
    $poststring = substr($poststring, 0, -1);

    // init curl connection
    $CR = curl_init();
    curl_setopt($CR, CURLOPT_URL, &quot;http://&quot;.$host.$path.$poststring);
    curl_setopt($CR, CURLOPT_FAILONERROR, true);
    curl_setopt($CR, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($CR, CURLOPT_SSL_VERIFYPEER, 0);
    // actual curl execution perfom
    $result = curl_exec( $CR );
    $error = curl_error( $CR );
    // on error - exit with error message
    if( !empty( $error ))
    {
        return $error;
    }
    curl_close( $CR );
    // re-format the string into array

    $answer = array();
    $answer[&#039;query&#039;] = $poststring;
    $response = explode(&#039;&amp;&#039;, $result);
    foreach($response as $key=&gt;$value)
    {
        unset($tmparr);
        $tmparr=explode(&quot;=&quot;,$value);
        $answer[$tmparr[0]]=$tmparr[1];
    }

    return $result;
}
</pre>
<p>השימוש בה:</p>
<pre class="brush: php">
# Get SMS account balance
echo getSmsCredit();
</pre>
<p>ישנם כמה ערכים שצריך יהיה להגדיר בתוך הפונקציות והם מוצגים עם הערות להבנה קלה יותר.</p>
<p>לכל שאלה או בקשה יש לכתוב תגובה לפוסט זה.</p>
<p>ואדים.<strong>Similar Posts</strong>
<ul class="similar-posts">None Found
</ul>
<p><!-- Similar Posts took 2.119 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/06/21/%d7%a9%d7%99%d7%9e%d7%95%d7%a9-%d7%91-micropay-%d7%9c%d7%a9%d7%9c%d7%99%d7%97%d7%aa-sms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPB 3.0.0 RC1 &#8211; יישור הסקין</title>
		<link>http://vadimg.com/2009/05/21/ipb-300-rc1-%d7%99%d7%99%d7%a9%d7%95%d7%a8-%d7%94%d7%a1%d7%a7%d7%99%d7%9f/</link>
		<comments>http://vadimg.com/2009/05/21/ipb-300-rc1-%d7%99%d7%99%d7%a9%d7%95%d7%a8-%d7%94%d7%a1%d7%a7%d7%99%d7%9f/#comments</comments>
		<pubDate>Thu, 21 May 2009 08:03:48 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[חדשות]]></category>
		<category><![CDATA[פורומים]]></category>
		<category><![CDATA[invision power board]]></category>
		<category><![CDATA[ipb]]></category>
		<category><![CDATA[RC1]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=291</guid>
		<description><![CDATA[IPB 3.0.0 RC1 יצאה וכחלק מהאפשרויות החדשות במערכת שהחברה הוסיפה, תיהיה אפשרות ליישר את הסקין לקריאה מימין לשמאל כברירת מחדל במערכת. מאחר והחברה לא מדברת שפה שהיא תומכת בזה עברית/ערבית נבחרתי לעשות זאת בעצמי ולספק זאת לחברה כדי שתיהיה תמיכה רשמית במערכת. נכון לעכשיו נעשו כמה שינויים כדי להגדיר את העיצוב ליישור נכון לקריאה מימין [...]]]></description>
			<content:encoded><![CDATA[<p>IPB 3.0.0 RC1 יצאה וכחלק מהאפשרויות החדשות במערכת שהחברה הוסיפה, תיהיה אפשרות ליישר את הסקין לקריאה מימין לשמאל כברירת מחדל במערכת. מאחר והחברה לא מדברת שפה שהיא תומכת בזה עברית/ערבית נבחרתי לעשות זאת בעצמי ולספק זאת לחברה כדי שתיהיה תמיכה רשמית במערכת.</p>
<p>נכון לעכשיו נעשו כמה שינויים כדי להגדיר את העיצוב ליישור נכון לקריאה מימין לשמאל, ניתן לראות את מה שנעשה עד כה בקישור <a href="http://vadimg.co.il/300rc1/" target="_blank">הזה</a></p>
<p>מה שנותר זה פשוט לאתר את הבעיות הקטנות הנסתרות בכל מיני המקומות שאני למשל לא הצלחתי לאתר אותם, אז כל מי שמעוניין לעזור מוזמן בכך שיכנס לקישור יגלוש קצת באתר ויאתר מקומות שבהם לדעתו האלמנטים לא מיושרים כראוי, במידה והוא מצא הוא יכול לדווח על כך באחת מהדרכים הבאות:</p>
<p>1. להשתמש ב TRACKER (אומנם גם בו יש המון באגים)</p>
<p>2. לפתוח נושא או תגובה בנושא קיים</p>
<p>מרבית הבדיקות נעשו על FF לכן רצוי יהיה שמשתמשי IE יכנסו ויגלשו באתר.</p>
<p>תודה. <img src='http://vadimg.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/08/25/ipb-sdk-v3-for-ipb-3/" rel="bookmark" title="08/25/2009">IPB SDK V3 FOR IPB 3</a> &#8211; 08/25/2009</li>
<li><a href="http://vadimg.com/2009/08/05/im-custom-navigation-1-0/" rel="bookmark" title="08/05/2009">(IM) Custom Navigation 1.0</a> &#8211; 08/05/2009</li>
</ul>
<p><!-- Similar Posts took 3.720 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/05/21/ipb-300-rc1-%d7%99%d7%99%d7%a9%d7%95%d7%a8-%d7%94%d7%a1%d7%a7%d7%99%d7%9f/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ZendFramework 1.8 Manual CHM file</title>
		<link>http://vadimg.com/2009/05/06/zendframework-18-manual-chm-file/</link>
		<comments>http://vadimg.com/2009/05/06/zendframework-18-manual-chm-file/#comments</comments>
		<pubDate>Wed, 06 May 2009 10:24:27 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[1.8]]></category>
		<category><![CDATA[chm]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=279</guid>
		<description><![CDATA[If your just like me that rather code with the help of a manual, But don&#8217;t won&#8217;t to dig trough HTML files and want everything sorted in the right way and have the ability to search the entire manual without the need to go to the online manual then this chm file will help you [...]]]></description>
			<content:encoded><![CDATA[<div style="direction:ltr;text-align:left;">If your just like me that rather code with the help of a manual, But don&#8217;t won&#8217;t to dig trough HTML files and want everything sorted in the right way and have the ability to search the entire manual without the need to go to the online manual then this chm file will help you as it does for me.I have taken the time to complie a CHM file that has everything the manual has including the ZendX manual HTML pages.</p>
<p>I am attaching the chm file and also a zip file consists of the code i made to generate it in the write way. The chm is split into chapters just like in the manual.</p>
<p>Hope this will be helpfull to someone. I know it does for me.</p>
<p><a href="http://www.vadimg.co.il/wp-content/uploads/2009/05/zf.zip">ZendFramework-CHM-HTML-Generation-PHP-Files</a></p>
<p><a href="http://www.vadimg.co.il/wp-content/uploads/2009/05/zendframework-18-manual-en.zip">zendframework-18-manual-en-chm-file</a></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2012/03/02/atthevip-com-code-is-now-on-github/" rel="bookmark" title="03/02/2012">Atthevip.com code is now on github!</a> &#8211; 03/02/2012</li>
<li><a href="http://vadimg.com/2009/02/19/%d7%94%d7%9b%d7%a0%d7%94-%d7%9c%d7%91%d7%97%d7%99%d7%a0%d7%94-%d7%a9%d7%9c-zend-%d7%93%d7%91%d7%a8%d7%99%d7%9d-%d7%a9%d7%a8%d7%a6%d7%95%d7%99-%d7%9c%d7%a2%d7%a9%d7%95%d7%aa/" rel="bookmark" title="02/19/2009">הכנה לבחינה של ZEND &#8211; דברים שרצוי לעשות</a> &#8211; 02/19/2009</li>
<li><a href="http://vadimg.com/2010/11/18/php-project-manager-the-wiki-video-introduction/" rel="bookmark" title="11/18/2010">PHP Project Manager &#8211; The Wiki &#8211; Video Introduction</a> &#8211; 11/18/2010</li>
<li><a href="http://vadimg.com/2011/12/27/free-php-html-css-javascript-editor-ide-codelobster-php-edition/" rel="bookmark" title="12/27/2011">Free PHP, HTML, CSS, JavaScript editor (IDE) &#8211; Codelobster PHP Edition</a> &#8211; 12/27/2011</li>
<li><a href="http://vadimg.com/2009/06/24/application-installer-wizard-class/" rel="bookmark" title="06/24/2009">Application Installer Wizard Class</a> &#8211; 06/24/2009</li>
</ul>
<p><!-- Similar Posts took 7.232 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/05/06/zendframework-18-manual-chm-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend_Payment &#8211; Using Paypal as the Gateway</title>
		<link>http://vadimg.com/2009/04/28/zend_payment-using-paypal-as-the-gateway/</link>
		<comments>http://vadimg.com/2009/04/28/zend_payment-using-paypal-as-the-gateway/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 12:03:40 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[frame]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[payment]]></category>
		<category><![CDATA[Paypal]]></category>
		<category><![CDATA[Paypal IPN]]></category>
		<category><![CDATA[Paypal PDT]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Zend_Payment]]></category>
		<category><![CDATA[Zend_Payment_Gateway_Paypal]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=271</guid>
		<description><![CDATA[Zend_Payment Zend_Payment Is a component that will offer a unified API for various payment providers. The payment component will allow you to easily process transactions without having to worry about all the back end details of connecting and setting up various options. Zend_Payment &#8211; Using Paypal as the Gateway Below is a brief Description, Information [...]]]></description>
			<content:encoded><![CDATA[<div style='direction: ltr; text-align:left;'>
<p>Zend_Payment</p>
<p>Zend_Payment Is a component that will offer a unified API for various payment providers.<br />
The payment component will allow you to easily process transactions without having to worry about all the back end details of connecting and setting up various options.</p>
<p>Zend_Payment &#8211; Using Paypal as the Gateway</p>
<p>Below is a brief Description, Information and Usage examples for using the Zend_Payment with Paypal as the Gateway processor.</p>
<p>In order to use the Zend_Payment component you can either use it&#8217;s static factory method and specifying which gateway to load as it&#8217;s first argument, Or initiate it directly by calling the appropriate Gateway class.</p>
<pre class="brush: php">
# Using factory method to load the Paypal gateway
# You can also specify an array with key =&gt; value pairs that will be added to the _options array if the gateway
# Requires certain options to be set such such as api_user/pass, email address etc..

$gateway = Zend_Payment::factory(&#039;paypal&#039;, $options);

# calling the class directly
$gateway = new Zend_Payment_Gateway_Paypal($options);

# Setting options for the Paypal gateway since it requires the merchant email address and password (more options are also required such as currency and language)
$gateway = Zend_Payment::factory(&#039;paypal&#039;, array( &#039;api_username&#039; =&gt; &#039;test@gmail.com&#039;, &#039;api_password&#039; =&gt; &#039;md5 hash&#039;, &#039;api_signature&#039; =&gt; &#039;signature&#039; ));

# You can also use an instance of a zend_config as the second argument and the component will do the rest IE:
$config = new Zend_Config(array( &#039;api_username&#039; =&gt; &#039;test@gmail.com&#039;, &#039;api_password&#039; =&gt; &#039;md5 hash&#039;, &#039;api_signature&#039; =&gt; &#039;signature&#039; ));
$gateway = Zend_Payment::factory(&#039;paypal&#039;, $config);
</pre>
<p>Most gateways requires certain options set before being able to use the gateway, So reading documentation is encouraged.</p>
<p>Charging using manual charge ( Redirects to the Paypal website ):</p>
<p>Before you could actually charge something you will need to set the fields to pass to the gateway<br />
Fields like credit card number, credit card name holder, amount, email addresses and other things that are on a gateway basis.<br />
In order to do that there are several ways to do that quickly and easily:</p>
<pre class="brush: php">
# Using the setField method:
$gateway-&gt;setField(&#039;ccnum&#039;, &#039;1234567890&#039;);

# You can chaing them as well
$gateway-&gt;setField(&#039;ccnum&#039;, &#039;1234567890&#039;)-&gt;setField(&#039;ccnum2&#039;, &#039;2222&#039;)-&gt;setField(&#039;ccnum3&#039;, &#039;333333&#039;);
</pre>
<pre class="brush: php">
# Using the setFields method to set multiple fields:
$gateway-&gt;setFields(
    array(
            &#039;ccnum&#039; =&gt; &#039;1234567890&#039;, // credit card number
            &#039;email&#039; =&gt; &#039;test@gmail.com&#039;, // email
            &#039;amount&#039; =&gt; &#039;12.92&#039;, // amount
          )
);
</pre>
<pre class="brush: php">
# Directly setting using the magic method __set
$gateway-&gt;ccnumber = &#039;123456789&#039;;
$gateway-&gt;amount = &#039;12.92&#039;;
</pre>
<pre class="brush: php">
# All we have to do now is to build the URL and redirect (optionally you can specify to return the formatted URL to store into an html tag and produce a button or a form action)

$gateway-&gt;setField(&#039;return&#039; =&gt; &#039;http://devserver.com/return.php&#039;)-&gt;setField(&#039;item_name&#039; =&gt; &#039;just testing&#039;);
$returned = $payment-&gt;buildButton(Zend_Payment_Gateway_Paypal::CMD_BUYNOW, &#039;billing@godaddy.com&#039;, 12.77);

print $returned;
/*

https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=billing@godaddy.com&amp;amount=1&amp;PAYMENTACTION=Sale&amp;CURRENCYCODE=USD

*/

NOTE: in order for this to work you will need to pass a Boolean value True for the PDT key when calling the factory method
</pre>
<p>If you pass in a Boolean True value as the last parameter it will auto redirect to that URL</p>
<pre class="brush: php">
# Auto redirect to the URL returned
$gateway-&gt;setField(&#039;return&#039; =&gt; &#039;http://devserver.com/return.php&#039;)-&gt;setField(&#039;item_name&#039; =&gt; &#039;just testing&#039;);
$returned = $payment-&gt;buildButton(Zend_Payment_Gateway_Paypal::CMD_BUYNOW, &#039;billing@godaddy.com&#039;, 12.77, true);

echo &quot;will not be executed&quot;;
</pre>
<p>* NOTE: any additional parameters can be set. You will need to refer to the documentation for available parameters to set for this action<br />
The PDF link is included in the method description and will be also included in the docs.</p>
<pre class="brush: php">
# Auto redirect to the URL returned

# Change currency to EUR
$gateway-&gt;CURRENCYCODE = &#039;EUR&#039;;

$gateway-&gt;setField(&#039;return&#039; =&gt; &#039;http://devserver.com/return.php&#039;)-&gt;setField(&#039;item_name&#039; =&gt; &#039;just testing&#039;);
$returned = $payment-&gt;buildButton(Zend_Payment_Gateway_Paypal::CMD_BUYNOW, &#039;billing@godaddy.com&#039;, 12.77, true);

echo &quot;will not be executed&quot;;
</pre>
<p>Calling the PDT</p>
<pre class="brush: php">
# Must pass a valid transaction ID and an optional second parameter which the account identity token
# If it wasn&#039;t set already when initializing the class

$gateway-&gt;getTransactionDetailsPDT($transactionid, $identitytoken=null);
</pre>
<p>At any time with any method used you can switch from sandbox to paypal live URL using one of the following:</p>
<pre class="brush: php">
# During initialize
$config = new Zend_Config(array( &#039;api_username&#039; =&gt; &#039;test@gmail.com&#039;, &#039;api_password&#039; =&gt; &#039;md5 hash&#039;, &#039;api_signature&#039; =&gt; &#039;signature&#039;, &#039;debug&#039; =&gt; true ));
$gateway = Zend_Payment::factory(&#039;paypal&#039;, $config);

# Anytime before any method call
$gateway-&gt;setConfig(&#039;debug&#039;, false);
</pre>
<p>For better and quicker usage there is the automated payments interface.<br />
Charging using auto charge ( Instant charge/response ):</p>
<pre class="brush: php">
# DoDirectPayment

$payment = Zend_Payment::factory(&#039;paypal&#039;, $config);
$creditcard = $payment-&gt;creditCardInfo(&#039;Visa&#039;, &#039;4570988239924515&#039;, 04, 2019, null, &#039;vadim&#039;, &#039;&#039;, &#039;gavrilov&#039;);

$billingaddress = $payment-&gt;billingInfo(&#039;Milliken Ave.&#039;, &#039;Los-Angeles&#039;, &#039;US&#039;, &#039;CA&#039;, 91730);
$amount = 1;
print_r($creditcard);
print_r($billingaddress);

$response = $payment-&gt;doDirectPayment( $creditcard, $billingaddress, $amount, array(&#039;cmd&#039; =&gt; Zend_Payment_Gateway_Paypal::CMD_NOTIFY , &#039;notify_url&#039; =&gt; &#039;http://devserver.com/workit.php&#039;) );

print_r($response);
</pre>
<pre class="brush: php">
# Obtain information about an Express Checkout transaction.

$return = $gateway-&gt;getExpressCheckout($token);
</pre>
<pre class="brush: php">
# Completes an Express Checkout transaction.

$return = $gateway-&gt;doExpressCheckout($_token, $_payerid, $_amount);
</pre>
<pre class="brush: php">
# Initiates the creation of a billing agreement.

$return = $gateway-&gt;setCustomerBillingAgreement($returnURL, $cancelURL, $amount, $billDesc, $paymentType=&#039;Any&#039;, $autoContinueOnSuccess=false);

# Example:

$cancelurl = &#039;http://devserver.com/bad.php&#039;;
$returnurl = &#039;http://devserver.com/done.php&#039;;
$set = $payment-&gt;setCustomerBillingAgreement( $returnurl, $cancelurl, $amount, &#039;dest&#039; );

if($payment-&gt;isSuccess())
{
    $payment-&gt;continueBillingAgreement($set[&#039;TOKEN&#039;]);
}
</pre>
<pre class="brush: php">
# Process a credit card payment.

$return = $gateway-&gt;doDirectPayment($creditInfo=array(), $billingInfo=array(), $amount);
</pre>
<pre class="brush: php">
# Process a payment from a buyer’s account, which is identified by a previous transaction.

$return = $gateway-&gt;doReferenceTransaction($ReferenceId, $creditInfo=array(), $billingInfo=array(), $amount);
</pre>
<pre class="brush: php">
# Accept or deny a pending transaction held by Fraud Management Filters.

$return = $gateway-&gt;managePendingTransactionStatus($transactionID, $actionType=&#039;Accept&#039;);
</pre>
<pre class="brush: php">
# Capture an authorized payment.

$return = $gateway-&gt;doCapture($authorizationID, $amount, $captureType=&#039;Complete&#039;);
</pre>
<pre class="brush: php">
# Create a recurring payments profile.

$return = $gateway-&gt;createRecurringPayment($token, $creditInfo=array(), $billingInfo=array(), $startDate, $billPeriod, $billFreq, $amount, $desc);

# Example:

$creditcard = $payment-&gt;creditCardInfo(&#039;Visa&#039;, &#039;4570988239924515&#039;, 04, 2019, null, &#039;vadim&#039;, &#039;&#039;, &#039;gavrilov&#039;);

$billingaddress = $payment-&gt;billingInfo(&#039;Milliken Ave.&#039;, &#039;Los-Angeles&#039;, &#039;US&#039;, &#039;CA&#039;, 91730);

$startDateStr = &#039;04/29/2009&#039;;
$start_time = strtotime($startDateStr);
$iso_start = date(&#039;Y-m-dT00:00:00Z&#039;,  $start_time);
$response = $payment-&gt;createRecurringPayment( $_GET[&#039;token&#039;], $creditcard, $billingaddress, $iso_start, &#039;Month&#039;, 1, $amount, &#039;dest&#039; );
</pre>
<pre class="brush: php">
# Update a recurring payments profile.

$return = $gateway-&gt;updateRecurringPayment($profileID, $creditInfo=array(), $billingInfo=array(), $startDate, $billPeriod, $billFreq, $amount, $desc);
</pre>
<pre class="brush: php">
# Make a payment to one or more PayPal account holders.

$return = $gateway-&gt;massPay($_receivers=array());

# Example:

$getters = array( &#039;vadimg88@gmail.com&#039;, &#039;test@gmail.com&#039;, &#039;1232@gssgg.com&#039;  );
$recivers = array();
foreach($getters as $get)
{
    $data = array(

    &#039;email&#039; =&gt; $get,
    &#039;amount&#039; =&gt; $amount,
    &#039;note&#039; =&gt; &#039;test&#039;,

    );

    $recivers[] = $data;
}

print_r($recivers);

$res = $payment-&gt;massPay($recivers);

print_r($res);
</pre>
<pre class="brush: php">
# Updates the PayPal Review page with shipping options, insurance, and tax information.

$return = $gateway-&gt;callBack();
</pre>
<pre class="brush: php">
# Bill the buyer for the outstanding balance associated with a recurring payments profile.

$return = $gateway-&gt;billOutstandingAmount($profileID);
</pre>
<pre class="brush: php">
# Confirms whether a postal address and postal code match those of the specified PayPal account holder.

$return = $gateway-&gt;addressVerify($emailAddress, $streetAddress, $zipCode);
</pre>
<pre class="brush: php">
# Obtain information about a recurring payments profile.

$return = $gateway-&gt;getRecurringPaymentDetails($profileId);
</pre>
<pre class="brush: php">
# DoReauthorization API Call

$return = $gateway-&gt;doReauthorization($authorizationID, $amount);
</pre>
<pre class="brush: php">
# Void an order or an authorization.

$return = $gateway-&gt;doVoid($authorizationID);
</pre>
<pre class="brush: php">
# Obtain the available balance for a PayPal account.

$return = $gateway-&gt;getBalance($token);
</pre>
<pre class="brush: php">
# Issue a refund to the PayPal account holder associated with a transaction.

$return = $gateway-&gt;refundTransaction($authorizationID, $type=&#039;Full&#039;, $amount=null);
</pre>
<pre class="brush: php">
# Search transaction history for transactions that meet the specified criteria.

$return = $gateway-&gt;transactionSearch($_startdate);

# Example:

$startDateStr = &#039;04/27/2009&#039;;
$start_time = strtotime($startDateStr);
$iso_start = date(&#039;Y-m-dT00:00:00Z&#039;,  $start_time);

$startDateStr2 = &#039;04/27/2009&#039;;
$start_time2 = strtotime($startDateStr2);
$iso_start2 = date(&#039;Y-m-dT00:00:00Z&#039;,  $start_time2);

//$payment-&gt;ENDDATE = $iso_start2;
$auth = $payment-&gt;transactionSearch($iso_start);

if($payment-&gt;isSuccess())
{
    # Do we have results
    if( $payment-&gt;hasSearchResults() )
    {
        print &quot;Total results: &quot;. $payment-&gt;totalSearchResults();
        foreach($payment-&gt;getSearchResults() as $key =&gt; $value)
        {
            print $value[&#039;name&#039;].&#039;&lt;br /&gt;&#039;;
        }
    }
}

print_r($auth);
</pre>
<pre class="brush: php">
# Authorize a payment.

$return = $gateway-&gt;doAuthorization($authorizationID, $amount);
</pre>
<pre class="brush: php">
# Generate a button Paypal website pro url, For donation purposes, buy now buttons

$return = $gateway-&gt;buildButton($_cmd, $email, $amount, $autoRedirect=false );
</pre>
<pre class="brush: php">
# Obtain information about a specific transaction.

$return = $gateway-&gt;getTransactionDetails($authorizationID);
</pre>
<p>You can make sure the payment went trough by using the &#8216;isSuccess&#8217; &#038; &#8216;isFailed&#8217; methods respectively at any time.</p>
<pre class="brush: php">
# Or $gateway-&gt;isFailed()
if( $gateway-&gt;isSuccess() )
{
    echo &quot;Done!&quot;;
}
else
{
    # You can use either one to print the error message
    print_r($payment-&gt;getErrorMessages());
}

print_r($response);

# Optional parameter can be inserted to both isSuccess and isFailed that reflects an array returned from the previous call.

if( $gateway-&gt;isSuccess($return) )
{
    echo &quot;Done!&quot;;
}
else
{
    # You can use either one to print the error message
    print_r($payment-&gt;getErrorMessages());
}
</pre>
<p>Most of this was tested already on the sandbox and some of the methods and calls were also tested on a live environment</p>
<p>Feedback and help with this will be very welcome.
</p></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/04/28/zend_payment-using-tranzila-as-the-gateway/" rel="bookmark" title="04/28/2009">Zend_Payment &#8211; Using Tranzila as the Gateway</a> &#8211; 04/28/2009</li>
<li><a href="http://vadimg.com/2009/04/28/zend_payment-using-moneybookers-as-the-gateway/" rel="bookmark" title="04/28/2009">Zend_Payment &#8211; Using MoneyBookers as the Gateway</a> &#8211; 04/28/2009</li>
<li><a href="http://vadimg.com/2009/03/30/%d7%97%d7%99%d7%95%d7%91-%d7%91%d7%90%d7%9e%d7%a6%d7%a2%d7%95%d7%aa-paypal-%d7%a4%d7%a9%d7%95%d7%98/" rel="bookmark" title="03/30/2009">חיוב באמצעות Paypal, פשוט.</a> &#8211; 03/30/2009</li>
<li><a href="http://vadimg.com/2009/02/24/zend-server-%d7%a1%d7%91%d7%99%d7%91%d7%aa-%d7%a4%d7%99%d7%aa%d7%95%d7%97-%d7%95%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-php-%d7%91%d7%9b%d7%9e%d7%94-%d7%93%d7%a7%d7%95%d7%aa/" rel="bookmark" title="02/24/2009">Zend Server &#8211; סביבת פיתוח ועבודה עם PHP בכמה דקות</a> &#8211; 02/24/2009</li>
<li><a href="http://vadimg.com/2009/04/03/zend-certified-%d7%a2%d7%9b%d7%a9%d7%99%d7%95-%d7%92%d7%9d-zend-framework-certified-engineer/" rel="bookmark" title="04/03/2009">Zend Certified? עכשיו גם Zend Framework Certified Engineer</a> &#8211; 04/03/2009</li>
</ul>
<p><!-- Similar Posts took 7.712 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/04/28/zend_payment-using-paypal-as-the-gateway/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Zend_Payment &#8211; Using MoneyBookers as the Gateway</title>
		<link>http://vadimg.com/2009/04/28/zend_payment-using-moneybookers-as-the-gateway/</link>
		<comments>http://vadimg.com/2009/04/28/zend_payment-using-moneybookers-as-the-gateway/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 11:22:42 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Component]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Zend_Payment]]></category>
		<category><![CDATA[Zend_Payment_Gateway_MoneyBookers]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=267</guid>
		<description><![CDATA[Zend_Payment Zend_Payment Is a component that will offer a unified API for various payment providers. The payment component will allow you to easily process transactions without having to worry about all the backend details of connecting and setting up various options. Zend_Payment &#8211; Using MoneyBookers as the Gateway Below is a brief Description, Information and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Zend_Payment</p>
<div style="direction: ltr;text-align: left;">
<p>Zend_Payment Is a component that will offer a unified API for various payment providers.<br />
The payment component will allow you to easily process transactions without having to worry about all the backend details of connecting and setting up various options.</p>
<p>Zend_Payment &#8211; Using MoneyBookers as the Gateway</p>
<p>Below is a brief Description, Information and Usage examples for using the Zend_Payment with MoneyBookers as the Gateway processor.</p>
<p>In order to use the Zend_Payment component you can either use it&#8217;s static factory method and specifying which gateway to load as it&#8217;s first argument, Or initiate it directly by calling the appropriate Gateway class.</p>
<pre class="brush: php">
# Using factory method to load the MoneyBookers gateway
# You can also specify an array with key =&gt; value pairs that will be added to the _options array if the gateway
# Requires certain options to be set such such as api_user/pass, email address etc..

$gateway = Zend_Payment::factory(&#039;moneybookers&#039;, $options);

# calling the class directly
$gateway = new Zend_Payment_Gateway_MoneyBookers($options);

# Setting options for the MoneyBookers gateway since it requires the merchant email address and password (more options are also required such as currency and language)
$gateway = Zend_Payment::factory(&#039;moneybookers&#039;, array( &#039;email&#039; =&gt; &#039;test@gmail.com&#039;, &#039;password&#039; =&gt; &#039;md5 hash&#039; ));

# You can also use an instance of a zend_config as the second argument and the component will do the rest IE:
$config = new Zend_Config(array( &#039;email&#039; =&gt; &#039;test@gmail.com&#039;, &#039;password&#039; =&gt; &#039;md5 hash&#039; ));
$gateway = Zend_Payment::factory(&#039;moneybookers&#039;, $config);
</pre>
<p>Most gateways requires certain options set before being able to use the gateway, So reading documentation is encourged.</p>
<p>Charging using manual charge ( Redirects to the moneybookers website ):</p>
<p>Before you could actually charge something you will need to set the fields to pass to the gateway<br />
Fields like credit card number, credit card name holder, amount, email addresses and other things that are on a gateway basis.<br />
In order to do that there are several ways to do that quickly and easily:</p>
<pre class="brush: php">
# Using the setField method:
$gateway-&gt;setField(&#039;ccnum&#039;, &#039;1234567890&#039;);

# You can chaing them as well
$gateway-&gt;setField(&#039;ccnum&#039;, &#039;1234567890&#039;)-&gt;setField(&#039;ccnum2&#039;, &#039;2222&#039;)-&gt;setField(&#039;ccnum3&#039;, &#039;333333&#039;);
</pre>
<pre class="brush: php">
# Using the setFields method to set multiple fields:
$gateway-&gt;setFields(
array(
&#039;ccnum&#039; =&gt; &#039;1234567890&#039;, // credit card number
&#039;email&#039; =&gt; &#039;test@gmail.com&#039;, // email
&#039;amount&#039; =&gt; &#039;12.92&#039;, // amount
)
);
</pre>
<pre class="brush: php">
# Directly setting using the magic method __set
$gateway-&gt;ccnumber = &#039;123456789&#039;;
$gateway-&gt;amount = &#039;12.92&#039;;
</pre>
<pre class="brush: php">
# All we have to do now is to build the url and redirect (optionally you can specify to return the formatted url to store into an HTML tag and produce a button or a form action)
$returned = $gateway-&gt;doTransferManual(&#039;test@gmail.com&#039;, 12.88, &#039;some title&#039;, &#039;some description&#039;);

print $returned;
/*

https://www.moneybookers.com/app/payment.pl?pay_to_email=vadimg88@gmail.com&amp;amount=1&amp;detail1_description=test&amp;detail1_text=123&amp;language=EN&amp;currency=USD&amp;ssss=asdasd&amp;currency=USD&amp;language=EN

*/
</pre>
<p>If you pass in a boolean True value as the last parameter it will auto redirect to that URL</p>
<pre class="brush: php">
# Auto redirect to the URL returned
$returned = $gateway-&gt;doTransferManual(&#039;test@gmail.com&#039;, 12.88, &#039;some title&#039;, &#039;some description&#039;, true);

echo &quot;will not be executed&quot;;
</pre>
<p>* NOTE: any additional parameters can be set. You will need to refer to the documentation for available parameters to set for this action<br />
The PDF link is included in the method description and will be also included in the docs.</p>
<pre class="brush: php">
# Auto redirect to the URL returned and display the moneybookers payment page in German
$gateway-&gt;language = &#039;DE&#039;;

# Change currency to EUR
$gateway-&gt;currency = &#039;EUR&#039;;

# More values can go before calling the method....
$returned = $gateway-&gt;doTransferManual(&#039;test@gmail.com&#039;, 12.88, &#039;some title&#039;, &#039;some description&#039;, true);

echo &quot;will not be executed&quot;;
</pre>
<p>For better and quicker usage there is the automated payments interface.<br />
Charging using auto charge ( Instant charge/response ):</p>
<pre class="brush: php">
# The first and second parameters are required and they specify the action to perform and the URL to work on
# the third and forth parameters are not required if the email &amp; password were set during initialize
# Otherwise you will need to specify them here.

# In this case we will &#039;prepare&#039; a transaction and if it went trough it will return an sid element or an error element respectively.

$response = $payment-&gt;doTransferAuto(&#039;prepare&#039;, Zend_Payment_Gateway_MoneyBookers::LIVE_URI, null, null, 1);
</pre>
<pre class="brush: php">
# Optionally you can set the 6 parameter to Boolean true to auto charge the transaction if it was successful and the 7th parameter with the relevant action
# in our case we can omit the 7th parameter since it&#039;s default value is set to &#039;transfer&#039; and in our case we will need to use that so no need to set the 7th parameter now.

$response = $payment-&gt;doTransferAuto(&#039;prepare&#039;, Zend_Payment_Gateway_MoneyBookers::LIVE_URI, null, null, 1 );

var_dump($response);
/*
array(1) {
[&quot;transaction&quot;]=&gt;
array(5) {
[&quot;amount&quot;]=&gt;
string(4) &quot;1.20&quot;
[&quot;currency&quot;]=&gt;
string(3) &quot;EUR&quot;
[&quot;id&quot;]=&gt;
string(6) &quot;497029&quot;
[&quot;status&quot;]=&gt;
string(1) &quot;2&quot;
[&quot;status_msg&quot;]=&gt;
string(9) &quot;processed&quot;
}
}
*/
</pre>
<pre class="brush: php">
# if the response went trough there will be an sid element in the response object
if($payment-&gt;isSuccess($response))
{
echo $response[&#039;sid&#039;];
}
else
{
# You can use either one to print the error message
echo $payment-&gt;getError();
//echo $response[&#039;error&#039;][&#039;error_msg&#039;];
}

print_r($response);
</pre>
<p>You can make sure the payment went trough by using the &#8216;isSuccess&#8217; &amp; &#8216;isFailed&#8217; methods respectively.</p>
<pre class="brush: php">
# Or $gateway-&gt;isFailed()
if( $gateway-&gt;isSuccess() )
{
echo &quot;Done!&quot;;
}
else
{
# You can use either one to print the error message
echo $payment-&gt;getError();
//echo $response[&#039;error&#039;][&#039;error_msg&#039;];
}

print_r($response);
</pre>
<p>Other actions are also available, Performing a custom action</p>
<pre class="brush: php">
# In this example we will perform a repost about a transaction to get it&#039;s status

$gateway-&gt;setField(&#039;trn_id&#039;, &#039;IDHERE&#039;)-&gt;setField(&#039;status_url&#039;, &#039;WHERE TO POST THE STATUS&#039;);
$response = $gateway-&gt;customAction(&#039;repost&#039;);

# This action allows merchants to request the details about a transaction received via the Merchant Gateway.

$gateway-&gt;setField(&#039;trn_id&#039;, &#039;IDHERE&#039;);
$response = $gateway-&gt;customAction(&#039;status_trn&#039;);

# Through the &#039;Account history&#039; action, the merchant may request a list with the details of all transactions performed by them during a given period.

$gateway-&gt;setField(&#039;start_date&#039;, &#039;29-05-2002&#039;);
$response = $gateway-&gt;customAction(&#039;history&#039;);
</pre>
<p>Using the Pay-On-Demand</p>
<pre class="brush: php">
$response = $payment-&gt;doTransferAuto(&#039;prepare&#039;, Zend_Payment_Gateway_MoneyBookers::ON_DEMAND, null, null, 1, true, &#039;request&#039;);

var_dump($response);
/*
array(1) {
[&quot;transaction&quot;]=&gt;
array(5) {
[&quot;amount&quot;]=&gt;
string(4) &quot;1.20&quot;
[&quot;currency&quot;]=&gt;
string(3) &quot;EUR&quot;
[&quot;id&quot;]=&gt;
string(6) &quot;497029&quot;
[&quot;status&quot;]=&gt;
string(1) &quot;2&quot;
[&quot;status_msg&quot;]=&gt;
string(9) &quot;processed&quot;
}
}

*/
</pre>
<p>Refund</p>
<pre class="brush: php">
$response = $payment-&gt;doTransferAuto(&#039;prepare&#039;, Zend_Payment_Gateway_MoneyBookers::REFUND, null, null, 1, true, &#039;refund&#039;);

var_dump($response);
/*
array(5) {
[&quot;mb_amount&quot;]=&gt;
string(1) &quot;1&quot;
[&quot;mb_currency&quot;]=&gt;
string(3) &quot;EUR&quot;
[&quot;mb_transaction_id&quot;]=&gt;
string(8) &quot;21221213&quot;
[&quot;status&quot;]=&gt;
string(1) &quot;2&quot;
[&quot;transaction_id&quot;]=&gt;
string(0) &quot;&quot;
}

*/
</pre>
<p>Basically every single action MoneyBookers offers can be used here. It&#8217;s a matter of the right parameters set.</p>
</div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/04/28/zend_payment-using-tranzila-as-the-gateway/" rel="bookmark" title="04/28/2009">Zend_Payment &#8211; Using Tranzila as the Gateway</a> &#8211; 04/28/2009</li>
<li><a href="http://vadimg.com/2009/04/28/zend_payment-using-paypal-as-the-gateway/" rel="bookmark" title="04/28/2009">Zend_Payment &#8211; Using Paypal as the Gateway</a> &#8211; 04/28/2009</li>
<li><a href="http://vadimg.com/2009/02/24/zend-server-%d7%a1%d7%91%d7%99%d7%91%d7%aa-%d7%a4%d7%99%d7%aa%d7%95%d7%97-%d7%95%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-php-%d7%91%d7%9b%d7%9e%d7%94-%d7%93%d7%a7%d7%95%d7%aa/" rel="bookmark" title="02/24/2009">Zend Server &#8211; סביבת פיתוח ועבודה עם PHP בכמה דקות</a> &#8211; 02/24/2009</li>
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
<li><a href="http://vadimg.com/2009/04/03/zend-certified-%d7%a2%d7%9b%d7%a9%d7%99%d7%95-%d7%92%d7%9d-zend-framework-certified-engineer/" rel="bookmark" title="04/03/2009">Zend Certified? עכשיו גם Zend Framework Certified Engineer</a> &#8211; 04/03/2009</li>
</ul>
<p><!-- Similar Posts took 7.204 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/04/28/zend_payment-using-moneybookers-as-the-gateway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend_Payment &#8211; Using Tranzila as the Gateway</title>
		<link>http://vadimg.com/2009/04/28/zend_payment-using-tranzila-as-the-gateway/</link>
		<comments>http://vadimg.com/2009/04/28/zend_payment-using-tranzila-as-the-gateway/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 10:21:29 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[כללי]]></category>
		<category><![CDATA[payment]]></category>
		<category><![CDATA[tranzila]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend component]]></category>
		<category><![CDATA[Zend_Payment]]></category>
		<category><![CDATA[Zend_Payment_Gateway_Tranzila]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=261</guid>
		<description><![CDATA[Zend_Payment Zend_Payment Is a component that will offer a unified API for various payment providers. The payment component will allow you to easily process transactions without having to worry about all the backend details of connecting and setting up various options. Zend_Payment &#8211; Using Tranzila as the Gateway Below is a brief Description, Information and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Zend_Payment</p>
<div style="direction: ltr;text-align: left;">
<p>Zend_Payment Is a component that will offer a unified API for various payment providers.<br />
The payment component will allow you to easily process transactions without having to worry about all the backend details of connecting and setting up various options.</p>
<p>Zend_Payment &#8211; Using Tranzila as the Gateway</p>
<p>Below is a brief Description, Information and Usage examples for using the Zend_Payment with Tranzila as the Gateway processor.</p>
<p>In order to use the Zend_Payment component you can either use it&#8217;s static factory method and specifying which gateway to load as it&#8217;s first argument, Or initiate it directly by calling the appropriate Gateway class.</p>
<pre class="brush: php">
# Using factory method to load the tranzila gateway
# You can also specify an array with key =&gt; value pairs that will be added to the _options array if the gateway
# Requires certain options to be set such such as api_user/pass, email address etc..

$gateway = Zend_Payment::factory(&#039;tranzila&#039;, $options);

# calling the class directly
$gateway = new Zend_Payment_Gateway_Tranzila($options);

# Setting options for the tranzila gateway since it requires a supplier key set
$gateway = Zend_Payment::factory(&#039;tranzila&#039;, array( &#039;supplier&#039; =&gt; &#039;supplier key&#039; ));

# You can also use an instance of a zend_config as the second argument and the component will do the rest IE:
$config = new Zend_Config(array( &#039;supplier&#039; =&gt; &#039;supplier key&#039; ));
$gateway = Zend_Payment::factory(&#039;tranzila&#039;, $config);
</pre>
<p>Most gateways requires certain options set before being able to use the gateway, So reading documentation is encourged.</p>
<p>Charging a credit card using the &#8216;doCharge&#8217;:</p>
<p>Before you could actually charge something you will need to set the fields to pass to the gateway<br />
Fields like credit card number, credit card name holder, amount, email addresses and other things that are on a gateway basis.<br />
In order to do that there are several ways to do that quickly and easily:</p>
<pre class="brush: php">
# Using the setField method:
$gateway-&gt;setField(&#039;ccnum&#039;, &#039;1234567890&#039;);
</pre>
<pre class="brush: php">
# Using the setFields method to set multiple fields:
$gateway-&gt;setFields(
array(
&#039;ccnum&#039; =&gt; &#039;1234567890&#039;, // credit card number
&#039;email&#039; =&gt; &#039;test@gmail.com&#039;, // email
&#039;amount&#039; =&gt; &#039;12.92&#039;, // amount
)
);
</pre>
<pre class="brush: php">
# Directly setting using the magic method __set
$gateway-&gt;ccnumber = &#039;123456789&#039;;
$gateway-&gt;amount = &#039;12.92&#039;;
</pre>
<pre class="brush: php">
# Reaching here it will parse all fields in an NVP (name value pair) string and query the required URL.
$response = $gateway-&gt;doCharge();
</pre>
<p>You can make sure the payment went trough by using the &#8216;isSuccess&#8217; &amp; &#8216;isFailed&#8217; methods respectivly.</p>
<pre class="brush: php">
# Or $gateway-&gt;isFailed()
if( $gateway-&gt;isSuccess() )
{
echo &quot;Done!&quot;;
}
else
{
echo $this-&gt;_error_string;
echo $this-&gt;_errorcode
}

print_r($response);

outputs
/*
array(20) {
[&quot;Response&quot;]=&gt;
string(3) &quot;033&quot;
[&quot;fname&quot;]=&gt;
string(3) &quot;àôé&quot;
[&quot;expmonth&quot;]=&gt;
string(2) &quot;02&quot;
[&quot;contact&quot;]=&gt;
string(11) &quot;àôé áåøåëåá&quot;
[&quot;description&quot;]=&gt;
string(37) &quot;RentCenter - çéåá òáåø îåöøéí ùäåæîðå&quot;
[&quot;orderid&quot;]=&gt;
string(4) &quot;3438&quot;
[&quot;email&quot;]=&gt;
string(0) &quot;&quot;
[&quot;ccno&quot;]=&gt;
string(12) &quot;234234234234&quot;
[&quot;expyear&quot;]=&gt;
string(2) &quot;09&quot;
[&quot;npay&quot;]=&gt;
string(1) &quot;1&quot;
[&quot;supplier&quot;]=&gt;
string(3) &quot;123&quot;
[&quot;lname&quot;]=&gt;
string(7) &quot;áåøåëåá&quot;
[&quot;IMaam&quot;]=&gt;
string(5) &quot;0.155&quot;
[&quot;CVVstatus&quot;]=&gt;
string(1) &quot;0&quot;
[&quot;company&quot;]=&gt;
string(11) &quot;àôé áåøåëåá&quot;
[&quot;sum&quot;]=&gt;
string(1) &quot;1&quot;
[&quot;ConfirmationCode&quot;]=&gt;
string(7) &quot;0000000&quot;
[&quot;index&quot;]=&gt;
string(4) &quot;3178&quot;
[&quot;Tempref&quot;]=&gt;
string(8) &quot;74550001&quot;
[&quot;Responsesource&quot;]=&gt;
string(1) &quot;0&quot;
}

*/
</pre>
<p>In this gateway case the response went trough when the &#8216;Response&#8217; element is 000 any other value means an error.<br />
You can print the error using:</p>
<pre class="brush: php">
echo $gateway-&gt;_error_string;
# Printing the code
echo $gateway-&gt;error_code;
</pre>
<p>This gateway has only two options either charge someone or charge-back the former was explained above, In order to do the later<br />
All you have to do is use the same methods/options/fields as above AND adding another 3:</p>
<p>&#8216;tranmode&#8217; -&gt; this field must be added to the gateway fields stack by using on of the methods above to add a field and assign it to a capital &#8216;C&#8217; letter.<br />
That way the gateway knows it&#8217;s a charge-back and not a charge. Also the credit card number must be specified as well, and the &#8216;Tempref&#8217; value returned in the response above.<br />
So it will be a good ideas saving it for later use.</p>
<p>That&#8217;s a bout it with this gateway. Others probably have more things and methods to choose and use from.
</p></div>
<p><strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/04/28/zend_payment-using-moneybookers-as-the-gateway/" rel="bookmark" title="04/28/2009">Zend_Payment &#8211; Using MoneyBookers as the Gateway</a> &#8211; 04/28/2009</li>
<li><a href="http://vadimg.com/2009/04/28/zend_payment-using-paypal-as-the-gateway/" rel="bookmark" title="04/28/2009">Zend_Payment &#8211; Using Paypal as the Gateway</a> &#8211; 04/28/2009</li>
<li><a href="http://vadimg.com/2009/02/24/zend-server-%d7%a1%d7%91%d7%99%d7%91%d7%aa-%d7%a4%d7%99%d7%aa%d7%95%d7%97-%d7%95%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-php-%d7%91%d7%9b%d7%9e%d7%94-%d7%93%d7%a7%d7%95%d7%aa/" rel="bookmark" title="02/24/2009">Zend Server &#8211; סביבת פיתוח ועבודה עם PHP בכמה דקות</a> &#8211; 02/24/2009</li>
<li><a href="http://vadimg.com/2009/02/19/%d7%94%d7%9b%d7%a0%d7%94-%d7%9c%d7%91%d7%97%d7%99%d7%a0%d7%94-%d7%a9%d7%9c-zend-%d7%93%d7%91%d7%a8%d7%99%d7%9d-%d7%a9%d7%a8%d7%a6%d7%95%d7%99-%d7%9c%d7%a2%d7%a9%d7%95%d7%aa/" rel="bookmark" title="02/19/2009">הכנה לבחינה של ZEND &#8211; דברים שרצוי לעשות</a> &#8211; 02/19/2009</li>
<li><a href="http://vadimg.com/2010/10/15/php-5-3-zend-certified/" rel="bookmark" title="10/15/2010">PHP 5.3 Zend Certified</a> &#8211; 10/15/2010</li>
</ul>
<p><!-- Similar Posts took 6.664 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/04/28/zend_payment-using-tranzila-as-the-gateway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>מערך ל XML וההפך, בעזרת Zend Framework אבל לא רק.</title>
		<link>http://vadimg.com/2009/04/20/%d7%9e%d7%a2%d7%a8%d7%9a-%d7%9c-xml-%d7%95%d7%94%d7%94%d7%a4%d7%9a-%d7%94%d7%9e%d7%a8%d7%94-%d7%a4%d7%a9%d7%95%d7%98%d7%94-%d7%95%d7%9e%d7%94%d7%99%d7%a8%d7%94/</link>
		<comments>http://vadimg.com/2009/04/20/%d7%9e%d7%a2%d7%a8%d7%9a-%d7%9c-xml-%d7%95%d7%94%d7%94%d7%a4%d7%9a-%d7%94%d7%9e%d7%a8%d7%94-%d7%a4%d7%a9%d7%95%d7%98%d7%94-%d7%95%d7%9e%d7%94%d7%99%d7%a8%d7%94/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 09:40:43 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[המרה]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=257</guid>
		<description><![CDATA[כחלק מהעבודה אני עובד הרבה עם מידע שאני מעביר בעזרת קבצי XML, לעיתים המידע הזה מכיל הרבה תוכן, ולייצא אותו לקבוץ טקסט או כל קובץ אחר לא ממש נותן הרבה אפשרויות. לכן כתבתי שני מחלקות שבעצם עושות את כל העבודה הקשה. אחת מהם היא לוקחת מסמך XML (בין אם זה סטרינג או קובץ לטעינה) וממירה [...]]]></description>
			<content:encoded><![CDATA[<p>כחלק מהעבודה אני עובד הרבה עם מידע שאני מעביר בעזרת קבצי XML, לעיתים המידע הזה מכיל הרבה תוכן, ולייצא אותו לקבוץ טקסט או כל קובץ אחר לא ממש נותן הרבה אפשרויות. לכן כתבתי שני מחלקות שבעצם עושות את כל העבודה הקשה. אחת מהם היא לוקחת מסמך XML (בין אם זה סטרינג או קובץ לטעינה) וממירה אותו למערך רב מימדים אשר מכיל את כל הנתונים אודות המסמך. השנייה עושה בידיוק ההפך, לוקחת מערך רב מימדים או כל מערך בכל מימד, וממירה אותו למסמך XML תקין אשר יהיה ניתן או להדפיס לדפדפן או להציג בתור קובץ להורדה. הכל בעזרת אותם מתודות במחלקה.</p>
<p>כדי להקל על העבודה שלי בלפרסם את זה בכמה מקומות, בכמה דרכים. פרסמתי את זה בתור רכיב ל Zend Framework אשר ניתן לקרוא לגביו ולקבל פרטים, את הקוד של המחלקות, ודוגמאות לשימוש בקישור הבא: <a href="http://framework.zend.com/wiki/display/ZFPROP/Zend_Xml+-+Vadim+Gabriel" target="_blank">לחץ כאן</a></p>
<p>במידה וישנם שאלות שתרצו לשאול אודות השימוש, בעברית כאן יהיה המקום.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/02/19/zend-framework-%d7%9c%d7%9e%d7%94-%d7%91%d7%90%d7%9e%d7%aa-%d7%9b%d7%93%d7%99-%d7%9c%d7%94%d7%a9%d7%aa%d7%9e%d7%a9-%d7%91%d7%94/" rel="bookmark" title="02/19/2009">Zend Framework &#8211; למה באמת כדי להשתמש בה?</a> &#8211; 02/19/2009</li>
<li><a href="http://vadimg.com/2009/02/24/zend-server-%d7%a1%d7%91%d7%99%d7%91%d7%aa-%d7%a4%d7%99%d7%aa%d7%95%d7%97-%d7%95%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-php-%d7%91%d7%9b%d7%9e%d7%94-%d7%93%d7%a7%d7%95%d7%aa/" rel="bookmark" title="02/24/2009">Zend Server &#8211; סביבת פיתוח ועבודה עם PHP בכמה דקות</a> &#8211; 02/24/2009</li>
<li><a href="http://vadimg.com/2009/04/03/zend-certified-%d7%a2%d7%9b%d7%a9%d7%99%d7%95-%d7%92%d7%9d-zend-framework-certified-engineer/" rel="bookmark" title="04/03/2009">Zend Certified? עכשיו גם Zend Framework Certified Engineer</a> &#8211; 04/03/2009</li>
<li><a href="http://vadimg.com/2009/02/03/%d7%a2%d7%91%d7%95%d7%93%d7%94-%d7%a2%d7%9d-%d7%a4%d7%a8%d7%99%d7%99%d7%9e%d7%95%d7%95%d7%a8%d7%a7-%d7%90%d7%95-%d7%94%d7%aa%d7%97%d7%9c%d7%94-%d7%97%d7%93%d7%a9%d7%94/" rel="bookmark" title="02/03/2009">עבודה עם פריימוורק או התחלה חדשה?</a> &#8211; 02/03/2009</li>
<li><a href="http://vadimg.com/2009/04/01/zend-framework-%d7%92%d7%a8%d7%a1%d7%90-178-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="04/01/2009">Zend Framework גרסא 1.7.8 שוחררה</a> &#8211; 04/01/2009</li>
</ul>
<p><!-- Similar Posts took 6.391 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/04/20/%d7%9e%d7%a2%d7%a8%d7%9a-%d7%9c-xml-%d7%95%d7%94%d7%94%d7%a4%d7%9a-%d7%94%d7%9e%d7%a8%d7%94-%d7%a4%d7%a9%d7%95%d7%98%d7%94-%d7%95%d7%9e%d7%94%d7%99%d7%a8%d7%94/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8 גרסאת הדגמה</title>
		<link>http://vadimg.com/2009/04/08/zend-framework-18-%d7%92%d7%a8%d7%a1%d7%90%d7%aa-%d7%94%d7%93%d7%92%d7%9e%d7%94/</link>
		<comments>http://vadimg.com/2009/04/08/zend-framework-18-%d7%92%d7%a8%d7%a1%d7%90%d7%aa-%d7%94%d7%93%d7%92%d7%9e%d7%94/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 08:01:14 +0000</pubDate>
		<dc:creator>Vadim Gabriel</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[חדשות]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.vadimg.com/?p=255</guid>
		<description><![CDATA[לכל אלו שמשתמשים במערכת הזאת (ולכל אלו שלא, כדי שתתחילו. תחסכו לעצמכם זמן ודברים אחרים) גרסאת ההדגמה הראשונה של ZF 1.8 שוחררה היום/אתמול (תלוי איפה אתם נמצאים בעולם) וניתנת להורדה מיידית. לקבלת פרטים נוספים תוכלו לקרוא את הפרטים המלאים אודות הגרסא הזאת בבלוג של Matthew . להורדה ישירה לחצו כאן. במידה וישנם שאלות, שאלו. חג [...]]]></description>
			<content:encoded><![CDATA[<p>לכל אלו שמשתמשים במערכת הזאת (ולכל אלו שלא, כדי שתתחילו. תחסכו לעצמכם זמן ודברים אחרים) גרסאת ההדגמה הראשונה של ZF 1.8 שוחררה היום/אתמול (תלוי איפה אתם נמצאים בעולם) וניתנת להורדה מיידית.</p>
<p>לקבלת פרטים נוספים תוכלו לקרוא את הפרטים המלאים אודות הגרסא הזאת <a href="http://weierophinney.net/matthew/archives/214-Zend-Framework-1.8-PREVIEW-Release.html" target="_blank">בבלוג של Matthew</a> . להורדה ישירה <a href="http://framework.zend.com/releases/ZendFramework-1.8.0a1/ZendFramework-1.8.0a1.zip" target="_blank">לחצו כאן.</a></p>
<p>במידה וישנם שאלות, שאלו. <img src='http://vadimg.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  חג שמח.<strong>Similar Posts</strong>
<ul class="similar-posts">
<li><a href="http://vadimg.com/2009/02/19/zend-framework-%d7%9c%d7%9e%d7%94-%d7%91%d7%90%d7%9e%d7%aa-%d7%9b%d7%93%d7%99-%d7%9c%d7%94%d7%a9%d7%aa%d7%9e%d7%a9-%d7%91%d7%94/" rel="bookmark" title="02/19/2009">Zend Framework &#8211; למה באמת כדי להשתמש בה?</a> &#8211; 02/19/2009</li>
<li><a href="http://vadimg.com/2009/04/01/zend-framework-%d7%92%d7%a8%d7%a1%d7%90-178-%d7%a9%d7%95%d7%97%d7%a8%d7%a8%d7%94/" rel="bookmark" title="04/01/2009">Zend Framework גרסא 1.7.8 שוחררה</a> &#8211; 04/01/2009</li>
<li><a href="http://vadimg.com/2009/04/20/%d7%9e%d7%a2%d7%a8%d7%9a-%d7%9c-xml-%d7%95%d7%94%d7%94%d7%a4%d7%9a-%d7%94%d7%9e%d7%a8%d7%94-%d7%a4%d7%a9%d7%95%d7%98%d7%94-%d7%95%d7%9e%d7%94%d7%99%d7%a8%d7%94/" rel="bookmark" title="04/20/2009">מערך ל XML וההפך, בעזרת Zend Framework אבל לא רק.</a> &#8211; 04/20/2009</li>
<li><a href="http://vadimg.com/2009/04/03/zend-certified-%d7%a2%d7%9b%d7%a9%d7%99%d7%95-%d7%92%d7%9d-zend-framework-certified-engineer/" rel="bookmark" title="04/03/2009">Zend Certified? עכשיו גם Zend Framework Certified Engineer</a> &#8211; 04/03/2009</li>
<li><a href="http://vadimg.com/2010/04/01/yii-framework-twitter-api-extension/" rel="bookmark" title="04/01/2010">Yii Framework Twitter API Extension</a> &#8211; 04/01/2010</li>
</ul>
<p><!-- Similar Posts took 6.225 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://vadimg.com/2009/04/08/zend-framework-18-%d7%92%d7%a8%d7%a1%d7%90%d7%aa-%d7%94%d7%93%d7%92%d7%9e%d7%94/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
