<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Taylor Otwell</title><generator>Tumblr (3.0; @taylorotwell)</generator><link>http://taylorotwell.tumblr.com/</link><item><title>Setting up MAMP, PEAR, PECL, and PHPUnit on Lion.</title><description>&lt;p&gt;With my recent acquisition of a new MacBook Pro, I needed to setup a fresh PHP development environment. I enjoy the convenience of MAMP Pro for managing virtual hosts, so I decided to give it a shot. Here&amp;#8217;s how I got everything working:&lt;/p&gt;

&lt;h2&gt;Adding PHP to your PATH:&lt;/h2&gt;

&lt;p&gt;In your home directory, create or edit your existing &lt;code&gt;.bash_profile&lt;/code&gt; and make sure it contains something like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;export PATH=/Applications/MAMP/bin/php/php5.x.x/bin:/Applications/MAMP/Library/bin:$PATH&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After making this change, restart your terminal. This will you to use simply use &lt;code&gt;php&lt;/code&gt; from terminal. Test it by executing the command &lt;code&gt;php --version&lt;/code&gt; from your home directory.&lt;/p&gt;

&lt;p&gt;Also, execute the command &lt;code&gt;which php&lt;/code&gt; and verify that it is pointing to the MAMP directory.&lt;/p&gt;

&lt;h2&gt;Setting up PECL&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Because the &amp;#8220;MAMP Server Components&amp;#8221; do not contain the source files for the latest PHP 5.3 release included with MAMP, I was forced to use PHP 5.3.5.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;Install X-Code from the App Store.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the X-Code &amp;#8220;command line tools&amp;#8221; via the &amp;#8220;Downloads&amp;#8221; tab in the preferences pane.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the &lt;a href="http://sourceforge.net/projects/mamp/files/mamp/2.0.2/MAMP_components_2.0.2.zip/download"&gt;MAMP Server Components&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;mkdir /Applications/MAMP/bin/php/php5.x.x/include/php&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Within the MAMP Server Components archive you downloaded, you should see another archive containing the source for your PHP version. Extract all of the source into the directory you just created in step 4.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;cd /Applications/MAMP/bin/php/php5.x.x/include/php&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;./configure --enable-mbstring=all&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;We&amp;#8217;re almost there! We need to manually install &amp;#8220;Autoconf&amp;#8221; before we can build PECL extensions. Here&amp;#8217;s how:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz"&gt;Download Autoconf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extract the files somewhere.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to the place where you extracted the Autoconf files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;./configure; make; sudo make install&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Alright! We&amp;#8217;re finally ready to install an extension, so let&amp;#8217;s give it a shot:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;pecl install mongo&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add &lt;code&gt;extension=mongo.so&lt;/code&gt; to &lt;code&gt;/Applications/MAMP/bin/php/php5.x.x/conf/php.ini&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit your MAMP &lt;code&gt;php.ini&lt;/code&gt; template (Edit Template -&amp;gt; PHP -&amp;gt; PHP 5.x.x php.ini), and add the same thing: &lt;code&gt;extension=mongo.so&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restart your MAMP servers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do a &lt;code&gt;phpinfo()&lt;/code&gt; from a PHP script and verify the mongo extension is present.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h2&gt;Setting up PEAR and PHPUnit&lt;/h2&gt;

&lt;p&gt;First, make sure you have already added PHP to your path as described above. The rest is easy. Execute a &lt;code&gt;which pear&lt;/code&gt; from your terminal and make sure it is pointing to MAMP. Great! Now, let&amp;#8217;s do a simple &lt;code&gt;pear upgrade pear&lt;/code&gt; to upgrade our PEAR installation. OK, now we&amp;#8217;re ready to install PHPUnit:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;code&gt;pear set-config auto_discover 1&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;pear install pear.phpunit.de/PHPUnit&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;That&amp;#8217;s it! Test it out by running the &lt;code&gt;phpunit&lt;/code&gt; command from your terminal. You should see the available PHPUnit commands listed.&lt;/p&gt;</description><link>http://taylorotwell.tumblr.com/post/26421075146</link><guid>http://taylorotwell.tumblr.com/post/26421075146</guid><pubDate>Tue, 03 Jul 2012 10:58:28 -0400</pubDate></item><item><title>Illuminating the future. What's next?</title><description>&lt;p&gt;Laravel turns one year old this month. When Laravel 1.0 was released, it didn&amp;#8217;t have Blade, bundles, migrations, schema building, and you could only have a single routes file (there were no controllers!). Now, in my opinion, just about every component of Laravel is best-in-class. I love using Blade. Eloquent is better than ever. Nothing else in PHP even comes close to the migration system.&lt;/p&gt;

&lt;p&gt;I treat Laravel like a product. Sometimes I keep secrets about my products. I do that for a few reasons. One reason is because it&amp;#8217;s part of Laravel&amp;#8217;s personality. You never know when it might blow you away with a sweet new feature. But the primary reason is because it&amp;#8217;s peaceful. I&amp;#8217;m free to experiment without answering questions. Building great products takes time. It takes experimentation. It takes risks. But, I&amp;#8217;m finally ready to give you a glimpse into where I think Laravel is heading over the next year or so.&lt;/p&gt;

&lt;p&gt;Lately in the PHP world there has been great emphasis on de-coupled components. Of course, writing solid, de-coupled code bases is nothing new. It&amp;#8217;s been good programming practice for decades. However, it hasn&amp;#8217;t always been widely embraced in the PHP world, especially amongst micro-frameworks. That is changing. Wonderful new tools like &lt;a href="http://getcomposer.org"&gt;Composer&lt;/a&gt; make building and consuming these components easier than ever, and I think this is great for PHP. For that reason, over the past month or so I have converted most of Laravel into stand-alone, PSR-0 / PSR-1 compliant components that may be used in any project. To distinguish the components from the Laravel framework itself, I have named them the &amp;#8220;Illuminate&amp;#8221; components. These components are still a work in progress, but the completed components match or exceed Laravel&amp;#8217;s current functionality, are 100% unit tested, and are available via Composer. Continuous integration is also present using Travis-CI.&lt;/p&gt;

&lt;p&gt;But, a set of components don&amp;#8217;t make a framework. A framework has to tie various components together into something meaningful and coherent. That&amp;#8217;s where I believe Laravel comes in. Let me state again that I&amp;#8217;m talking about the &lt;em&gt;future&lt;/em&gt;. Laravel 4 might not see the light of day until next year. However, I envision the next-generation of Laravel tying together these great Illuminate components into the cleanest, most elegant framework PHP has seen. I&amp;#8217;m truly more excited than ever about the future of Laravel. Imagine updating your Laravel installation with a simple &lt;code&gt;composer update&lt;/code&gt;. Imagine every component of Laravel being extendable or even replaceable. Imagine being able to snag a component for use in your legacy code base.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m thrilled to finally be able to talk about some of these things. The future for Laravel is so bright, and I&amp;#8217;m excited to explore it with you. I&amp;#8217;ll be sharing more about the next generation of Laravel over the coming months. Stay tuned.&lt;/p&gt;</description><link>http://taylorotwell.tumblr.com/post/25121832769</link><guid>http://taylorotwell.tumblr.com/post/25121832769</guid><pubDate>Thu, 14 Jun 2012 19:28:37 -0400</pubDate></item><item><title>Dayle Rees has been added to the core team.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m59giaxKnG1qg10pwo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Dayle Rees has been added to the core team.&lt;/p&gt;</description><link>http://taylorotwell.tumblr.com/post/24622848309</link><guid>http://taylorotwell.tumblr.com/post/24622848309</guid><pubDate>Thu, 07 Jun 2012 14:54:10 -0400</pubDate></item><item><title>Introducing The Laravel Core Team</title><description>&lt;p&gt;Laravel is almost 1 year old. When I released Laravel, I wasn&amp;#8217;t sure if anyone would ever use it. I was excited when we hit 5 watchers on Github. Now we have over 700. I&amp;#8217;m thrilled by the success Laravel has enjoyed, and a great part of that success is a direct result of Laravel&amp;#8217;s great community. The Laravel community is vibrant, friendly, and always willing to help newcomers to the framework.&lt;/p&gt;

&lt;p&gt;Throughout the first year of Laravel&amp;#8217;s life, I have developed the framework alone - not due to a lack of talent in the community, but rather as an intentional effort to keep the philosophy of the framework pure. I frequently dwell on a portion of Jonathan Ive&amp;#8217;s tribute to Steve Jobs. Ive mentions that Jobs knew how fragile ideas were, especially when they are first formed. That&amp;#8217;s why I have developed Laravel alone for a year. The framework was young. It was fragile. The philosophy was fragile. I think it can be dangerous to let too many people play with a fragile idea. It needs to be solidified first. It needs to be shaped.&lt;/p&gt;

&lt;p&gt;I feel we&amp;#8217;re there. I feel like the core philosophy of Laravel&amp;#8217;s simplicity, minimalism, and elegance has been thoroughly implanted on the community, and they have embraced it. So, I&amp;#8217;ve recently reached out to Phill Sparks and Shawn McCool, two of the most talented community members, and asked them to join the Laravel Core Team. Phill and Shawn will have full commit rights to the Laravel repository. They will greatly ease the burden of evaluating new features and merging pull requests. Please give them a warm welcome!&lt;/p&gt;</description><link>http://taylorotwell.tumblr.com/post/23484273646</link><guid>http://taylorotwell.tumblr.com/post/23484273646</guid><pubDate>Mon, 21 May 2012 12:22:00 -0400</pubDate></item><item><title>Why Laravel?</title><description>&lt;p&gt;I consistently get asked why Laravel should be used over CodeIgniter, Fuel, {insert another framework here}. Here are a few reasons off the top of my head:&lt;/p&gt;

&lt;h3&gt;It&amp;#8217;s expressive.&lt;/h3&gt;

&lt;p&gt;Do you know what the &amp;#8220;true&amp;#8221; flag does in this line of code?&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; $uri = Uri::create('some/uri', array(), array(), true);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Furthermore, do you have any idea what any of those parameters do besides the first one? Of course you don&amp;#8217;t. It&amp;#8217;s not expressive.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Expressive (adj.)&lt;/strong&gt;: Effectively conveying thought or feeling.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let&amp;#8217;s try another line of code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; $url = URL::to_secure('some/uri');
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This creates a full URL that uses the HTTPS protocol. Actually, both methods accomplish the same thing. Which one is more expressive?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Expressive code is maintainable code.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Getting up to speed on unfamiliar code is much faster when the code is expressive. It&amp;#8217;s also a breeze to maintain expressive code since the code is accurately conveying the actions it is performing. The code is &lt;em&gt;obvious&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In fact, this is actually one of my coding &amp;#8220;rules&amp;#8221;. I almost never expose a boolean flag on a method. If you have a boolean flag on a method, you can &lt;em&gt;always&lt;/em&gt; make another method that is more expressive.&lt;/p&gt;

&lt;h3&gt;It&amp;#8217;s simple.&lt;/h3&gt;

&lt;p&gt;Really, the web is pretty simple stuff. It&amp;#8217;s just request - response. I told myself this over and over again when building Laravel. I just want a simple way to catch requests and send out responses. That&amp;#8217;s it. &lt;a href="http://sinatrarb.com"&gt;Sinatra&lt;/a&gt; style routing nails this.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; Route::get('home', function()
 {
      return View::make('home.index');
 });
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But, of course, we need to do other things like validation, pagination, etc. All of this is simpler in Laravel. No crazy configuration files. Want to paginate some users while eager loading their posts? Sure:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; $users = User::with('posts')-&amp;gt;paginate();

 echo $users-&amp;gt;links();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Notice what you &lt;em&gt;didn&amp;#8217;t&lt;/em&gt; have to do. You didn&amp;#8217;t have to tell Laravel what page you&amp;#8217;re currently on, and you didn&amp;#8217;t have to create some ludicrous pagination configuration file. You&amp;#8217;re done. You&amp;#8217;re creating, not plumbing.&lt;/p&gt;

&lt;h3&gt;It&amp;#8217;s accessible.&lt;/h3&gt;

&lt;p&gt;CodeIgniter is popular because it has great documentation. It&amp;#8217;s very accessible. Kohana is a technically superior framework to CodeIgniter, but guess what? It doesn&amp;#8217;t matter. It doesn&amp;#8217;t matter if Kohana is better because its documentation is horrible.&lt;/p&gt;

&lt;p&gt;I promised myself never to release Laravel until I had great documentation, and I never release a new version until the documentation is totally up to date. Any PHP programmer can pick up Laravel and start using it in a matter of minutes. The expressiveness of the code itself and the great documentation truly make coding enjoyable.&lt;/p&gt;

&lt;h3&gt;Cool kids are in the community.&lt;/h3&gt;

&lt;p&gt;Laravel seriously has an awesome community. It&amp;#8217;s one of the things I love most about the framework. People are polite, friendly, and helpful. There are no egos and I&amp;#8217;ve never seen anyone be insulted for not knowing how to do something. Heck, I&amp;#8217;ve even jumped on Skype a few times to talk to random people about a problem they were having. If you&amp;#8217;re on IRC, be sure to stop by #laravel on Freenode.&lt;/p&gt;

&lt;p&gt;So there is my quick pitch for Laravel. I&amp;#8217;ve truly enjoyed working on the framework, and hope you enjoy using it.&lt;/p&gt;</description><link>http://taylorotwell.tumblr.com/post/21038245018</link><guid>http://taylorotwell.tumblr.com/post/21038245018</guid><pubDate>Fri, 13 Apr 2012 16:07:38 -0400</pubDate></item></channel></rss>
