Pragmatism in the real world

Three years of my Zend Framework Tutorial

Three years ago today, I published my first Getting Started with Zend Framework tutorial. This was the announcement. Back then, Zend Framework was at version 0.1.5 and a considerably smaller download than now :)

Three years later and I haven’t lost my enthusiasm for Zend Framework as you can tell since the latest version of the tutorial supports ZF 1.8 and 1.9 and uses the new features like Zend_Application and the command line Zend_Tool scripts. And I wrote a Zend Framework book!

I wonder what will happen in the next three years?!

23 thoughts on “Three years of my Zend Framework Tutorial

  1. Oh, I know exactly what will happen.

    Every few weeks/months Zend Framework will be updated with something awesome, that will have you updating the tutorial. This cycle will continue until ZF becomes sentient and starts generating it's own tutorials. Zend_Tool_Tutorial will become the first non-human author to appear in print.

    Shortly after that Zend_Tool_Tutorial will be deprecated since Zend_Tool_Consultant will make ZF developers obsolete and we'll all be out of a job.

    Seriously, don't you sometimes wish ZF's development would slow down a bit? ;-)

  2. Congratulations! Ans thanks for the your great tutorials, a lot of people started learn ZF with them :)

  3. Great work Rob!

    Hopefully the last big rewrite you will need to do in the next 3 years will be for 2.0!

    You have provided a truly valuable resource to many people getting to grips with ZF, so consider yourself patted on the back!

  4. yes…well done Rob. I don't think Zend Framework would be as successful as it is without your tutorials. We'd all still be scrabbling around in the mud!

    Hands up who hasn't followed Rob's tutorials…..I rest my case

  5. Great tutorial – helped me a lot! I also bought your book. Unfortunately many things have changed in ZF, so please update the book for version 2.0. As a newbie you never know how you should name this and that in the latest version and this is really a nightmare. Why are there so few tutorials online? I think Zend really should put some more work into building more tutorials for starters. The quick start is a joke.

  6. Yes, you are right . Every php developers may be looking forward to see what will happen in the coming years .
    Though there are many frameworks for PHP many are learning Zend Framework for its the PHP company that supports it.

  7. Hi Rob!

    Your tutorials are great and I read the ZFiA cover to cover a couple of times :)

    I have a question about the Places website example. I've based a site on what I've learned from that site but there is something I can't figure out.

    When a user logs in, we start a session with Zend_Auth. How do you control the timeout value for that session? I've searched the web and found snippets of code to change timeout values, but none of them seem to work with the login/auth examples you provided. Can you share some insight on what I would have to do to determine what that timeout is and how to change it so my users don't timeout due to inactivity as often?

    Thanks so much!!!

  8. Allan,

    It's a PHP session underneath, so the php.ini variables session.gc_maxlifetime and session.save_path are relevant.

    For a specific app, you can do something like this in an _init() function within your Bootstrap:


    $timeout = 7200; // 2hours
    ini_set('session.gc_maxlifetime', $timeout);

    $dir = ini_get('session.save_path').PATH_SEPARTOR.'mysite';
    if (!is_dir($dir)) { mkdir($dir, 0777); }
    ini_set('session.save_path', $dir);



  9. Please help!!! I am stuck
    When I run the tutorial website using the ZendFramework, I am getting this error, "The mysql driver is not currently installed"
    I am using:
    latest ZendFramework version

    Message: The mysql driver is not currently installed

    Stack trace:
    #0 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbAdapterPdoMysql.php(96): Zend_Db_Adapter_Pdo_Abstract->_connect()
    #1 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbAdapterAbstract.php(448): Zend_Db_Adapter_Pdo_Mysql->_connect()
    #2 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbAdapterPdoAbstract.php(238): Zend_Db_Adapter_Abstract->query('DESCRIBE `album…', Array)
    #3 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbAdapterPdoMysql.php(156): Zend_Db_Adapter_Pdo_Abstract->query('DESCRIBE `album…')
    #4 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbTableAbstract.php(814): Zend_Db_Adapter_Pdo_Mysql->describeTable('albums', NULL)
    #5 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbTableAbstract.php(857): Zend_Db_Table_Abstract->_setupMetadata()
    #6 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbTableAbstract.php(964): Zend_Db_Table_Abstract->_setupPrimaryKey()
    #7 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbTableSelect.php(100): Zend_Db_Table_Abstract->info()
    #8 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbTableSelect.php(78): Zend_Db_Table_Select->setTable(Object(Model_DbTable_Albums))
    #9 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbTableAbstract.php(1000): Zend_Db_Table_Select->__construct(Object(Model_DbTable_Albums))
    #10 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendDbTableAbstract.php(1286): Zend_Db_Table_Abstract->select()
    #11 C:Program FilesApache Software FoundationApache2.2htdocszf-tutorialapplicationcontrollersIndexController.php(16): Zend_Db_Table_Abstract->fetchAll()
    #12 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendControllerAction.php(513): IndexController->indexAction()
    #13 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendControllerDispatcherStandard.php(289): Zend_Controller_Action->dispatch('indexAction')
    #14 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendControllerFront.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #15 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendApplicationBootstrapBootstrap.php(77): Zend_Controller_Front->dispatch()
    #16 C:Program FilesApache Software FoundationApache2.2htdocszf-tutoriallibraryZendApplication.php(346): Zend_Application_Bootstrap_Bootstrap->run()
    #17 C:Program FilesApache Software FoundationApache2.2htdocszf-tutorialpublicindex.php(26): Zend_Application->run()
    #18 {main} Request Parameters:
    array (
    'controller' => 'index',
    'action' => 'index',
    'module' => 'default',

  10. to Cany: you can install the PDO-MYSQL driver lonely or you can recompile your php server with proper parameter.

  11. Thank you very much for this tutorial. I'm trying zend framework with documents that from net. And your tutorial is very usefull and helpfull for me.

  12. Thanks you very much for such a jump-start tutorial that cut my learning curve to almost 75%

Comments are closed.