Top Books about Zend Framework 3

In this post I want to provide a collection of books on Zend Framework 3 with their brief descriptions, advantages/disadvantages. This list is not yet complete, because ZF3 was released not so long ago, and more books will be released later. I plan to update this list once I discover a new ZF3 book. OK, let’s go!

1. Using Zend Framewrork 3 by Oleg Krivtsov (For beginners, Free)

Using Zend Framework 3 is a free and open-source book about the new version of Zend Framework. This book has a lot of code samples (hosted on GitHub) and is positioned as a book for beginners. Simple things go first in a chapter, which makes it easier to read this book for newbies. This book covers most important ZF3 usage topics like: main ZF3 components, MVC design pattern, what is service manager, how to use forms, how to manage database. This book is closely related with such third-party libraries as Doctrine ORM and Twitter Bootstrap.

2. Web Development with Zend Framework 3 by Michael Romer (A work in progress)

This is a new edition of the Web Development with Zend Framework series by Michael Romer. This book’s goal is to make it easier for you to get started with ZF3. This book is currently a work in progress.



Filed under PHP, Zend Framework 3

A Free Book about Zend Framework

Hi everyone!

I’m pleased to announce that now you can read my new book “Using Zend Framework 3” absolutely for free! Moreover, the book is an open-source project hosted on GitHub, so you are encouraged to contribute. The book source is available by this link.

The “Using Zend Framework 3” book is an adaptation of my previous “Using Zend Framework 2” book.

The new book is designed for beginners. Almost anything is explained in details, and code samples are provided. Samples are stored on GitHub and are available by this link. Each sample is a complete website that you can install on your Apache webserver and see Zend Framework in action.

Hope you’ll enjoy the book!
Oleg Krivtsov


Leave a comment

Filed under PHP, Zend Framework 3

Getting Started with Magento Extension Development – Book Review


Recently, I needed some good resource to start learning Magento e-Commerce system for one of my current web projects. For this project, I was required to write an extension module that would implement a customer-specific payment method. To get started, I tried to browse Magento documentation and to find good free tutorials on the Internet. I was not neither satisfied with the documentation nor could find a good tutorial. After realising that, I decided to find a good book about Magento extension development. I was so lucky, because I’ve found the “Getting Started with Magento Extension Development” book by Branko Ajzele. Below, I provide a brief overview of the book and my personal recommendations.

The Book

Indeed, the “Getting Started with Magento Extension Development” book is the right place to start with Magento extension development! Author’s explanation style is very easy to understand (compared to other resources I’ve faced with). Of course, to read the book you need to be a pro in PHP/Zend Framework development, otherwise you won’t be familiar with the terminology. But, since you know ZF, you will feel comfortable reading this book.

So, the book is some kind of “cook book”, its a set of recipes. Each recipe shows how to write certain example Magento extension from scratch. The complete source code can be downloaded when you purchase the book. The source code is very usable, because when you are new to Magento, you will typically make a mistake/type and will spend many hours determining why the code doesn’t work as you expected. With having the code, you can just install certain extension manually and just see how it works or to investigate its code deeper.

In the beginning of the book, there is a (very large) chapter about Magento code architecture and terminology. You will learn about the directory structure, the code pools (you are targeted on the Community pool), the controllers, actions and routers, the blocks, templates and themes (changeable sets of templates). The terms “controller”, “action” and “route” may be familiar to PHP developers who knows Zend Framework. However, “blocks” and “themes” is a very difficult thing to understand without this excellent book.

Next, you will find several chapters showing step-by-step how to write certain type of extension from scratch. The chapter begins with defining the requiresments for the extension module (What we are trying to achieve?) and the implementation of that requirements (What steps we need to perform to achieve that?)

The author shows how to write different simple types of extensions:

  • Logger extension. Shows how to listen to Magento events and react accordingly.
  • Shipping method extension. Add your own custom shipping method if a standard method doesn’t suits your needs.
  • Payment method extension. Shows how to write a payment method (if a standard one is not suitable for you).

The “Getting Started with Magento Extension Development” book is written by Branko Ajzele. He is a Chief Technology Officer at Inchoo, a Magento Gold Solution partner company that offers top-quality e-commerce solutions, specializing in the Magento e-commerce platform.

The book was published by Packt Publishing. It has 128 pages and costs $17.84. It can be purchased from Packt Publishing web site:

My Recommendations

To those who are new to Magento and strongly wishes to start creating Magento extensions quickly, the “Getting Started with Magento Extension Development” book is the right choice, because the author has a very good explanation style. This book is a set of recipes / very well developed step-by-step tutorials showing how to write modules for Magento. Complete source code can be downloaded together with the book, which makes learning much easier.


Writing review for this book is completely my choice based on my personal interest in learning Magento, and I was not paid for this. I was provided with a free PDF copy of this book in order that I may review it (I cooperate with Packt Publishing from time to time, because I’m interested in learning new things, and they are interested in spreading the word abouth their books). I am not receiving any money reward for writing this review.


Filed under Magento, PHP

A Fun PHP Wallpaper

php wallpaper1

A funny collection of PHP-related wallpapers:

Leave a comment

Filed under Uncategorized

International Day against DRM


On May 6th, the Day Against DRM is celebrated around the world.

What is DRM?

Digital Rights Management (DRM) is used to encrypt various multimedia products (including audio, video, eBooks, etc.) DRM is intended to restrict the unauthorised usage of a product. Although the DRM is designed for protecting the copyright holders, some people think this is “defective by design”. Defective by Design is an anti-DRM initiative by the Free Software Foundation (the authors of GNU project).

Support the Defective by Design Initiative

On May  6th, Packt Publishing performs an exciting action that will last for 24 hours only. You are able to explore the full range of DRM-free content at and purchase it for $10. All 2000+ eBooks and Videos will be $10 for 24 hours. Here is the link:

Leave a comment

Filed under Uncategorized

Twitter Bootstrap — Making a Professionaly Looking Site

Twitter Bootstrap (shortly, Bootstrap) is a popular CSS framework allowing to make your web site professionally looking and visually appealing, even if you don’t have advanced designer skills. The latest version of Bootstrap is v.3.0.

Overview of Bootstrap Files

The source code of Bootstrap framework’s components is spread across many CSS files. It is known that downloading multiple small files is typically slower than downloading a single large file. For this reason, Bootstrap CSS stylesheets are “concatenated” with the special tool and distributed in a form of a single file named bootstrap.css.

However, this bootstrap.css file has a disadvantage: it contains many characters (white space characters, new line characters, comments, etc.) unneeded for code execution, wasting network bandwidth when downloading the file, thus increasing page load time. To fix this problem, the minification is used.

The minification is the process of removing all unnecessary characters from the source code without changing its functionality. The minified Bootstrap file is called bootstrap.min.css.

Grid System

In most web sites, content is required to be organized in a table-like structure having rows and columns. In figure below, you can see an example layout of a typical web site: it has the header block with a logo, the sidebar at the left, page content area in the middle, the ads bar at the right, and the footer at the bottom of the page. These blocks are arranged in a grid, although grid cells have unequal width (some cells can span several columns).


Bootstrap provides a simple layout grid system to make it easy to arrange content on your pages in rows and columns.

Each row consists of up to 12 columns (see figure below). Column width is flexible
and depends on the width of the grid container element. Column height may vary
depending on the height of the content of the cell. The space between columns is 30 pixels (15 pixels padding at both sides of the column).


Columns can be spanned, so a single cell takes the space of several columns. For example, in figure above, the upper grid row consists of 12 columns, and each cell spans a single column. In the bottom row, the first cell spans 2 columns, the second and the third ones span 4 columns each, and the fourth cell spans 2 columns (in total we have 12 columns).

Defining the Grid

To arrange elements in a grid on your web page, you start from defining the
container by adding a <div> element having the .container CSS class. To add a new row to the grid, use a <div> element having the .row CSS class, as shown in the example below:

<div class="container">
  <div class="row">

To add columns, you use <div> elements with CSS class names varying from .col-md-1 to .col-md-12. The number in the class name specifies how many columns each grid cell will span:

<div class="container">
  <div class="row">
    <div class="col-md-1">Cell 1</div>
    <div class="col-md-5">Cell 2</div>
    <div class="col-md-6">Cell 3</div>  

In the example above, we have three cells. The first cell has a width of 1 (it uses the .col-md-1 class), the second cell spans 5 grid columns (class .col-md-5) and the third cell spans 6 columns (class .col-md-6).

Bootstrap’s Interface Components

Additionally to layout grid, Twitter Bootstrap provides many useful interface components. Here, we will consider two of them: navigation bar and dropdown menu.

Navigation Bar

Navigation bar is usually positioned on top of your web site and contains the links to main pages, like Home, Download, Support, About, etc. Twitter Bootstrap provides a nice visual style for the navbar (see figure below for example):


As you can see from the figure above, a navbar typically has the header (brand name
of your site can be placed here) and the links to main pages. To put a navbar on your page, you use the following HTML code:

<nav class="navbar navbar-default" role="navigation">  
  <div class="navbar-header">
    <a class="navbar-brand" href="#">Hello World</a>    
  <ul class="nav navbar-nav">      
    <li><a href="#">Home</a></li>
    <li><a href="#">Download</a></li>
    <li><a href="#">Support</a></li>
    <li><a href="#">About</a></li>

In line 1 above, we used the nav element, which contains all the navigation
bar information. The associated CSS class .navbar is defined by Bootstrap and
provides the base navigation bar’s appearance. The .navbar-default CSS class
specifies the “default” theme for the navigation bar.

The optional role attribute is an HTML
attribute allowing to annotate the page elements with machine-extractable
semantic information about the purpose of an element. In this example, the attribute tells that the nav element is used for navigation.

In lines 2-4, we define the navbar header area, which contains the Hello World
hyperlink. The brand hyperlink typically points to the main page of your site. The hyperlink has the .navbar-brand class that visually enhances the text.

In lines 5-10, we specify the navigation links for the Home, Download, Support and About pages. These links are organized inside an <ul> unordered list element. The element has CSS classes .nav and .navbar-nav that place list items in line and provide the hover item state.

Dropdown Menu

With Bootstrap navigation bar, it is possible to use the dropdown menu as a navigation item. For example, if the Support section of your site can be subdivided into Documentation and Help pages, these can be implemented as a dropdown menu (see figure below).


You define the dropdown menu by replacing the Support list item from the previous example in the following way:

<li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown">
     Support <b class="caret"></b>
  <ul class="dropdown-menu">
    <li><a href="#">Documentation</a></li>
    <li><a href="#">Help</a></li>          

In the code above, we use the <li> element with CSS class .dropdown that indicates the dropdown menu (line 1). In lines 2-4, the <a> element defines the hyperlink to show when the menu is hidden (the Support text is shown followed by the triangle caret).

When the site user clicks the hyperlink, the dropdown menu (lines 5-8) appears. The <ul> unordered list element with class .dropdown-menu defines its visual appearance. The dropdown menu contains two items: the Documentation and Help hyperlinks.

Note: this post is an excerpt from my book Using Zend Framework 2

Leave a comment

Filed under Zend Framework 2

LEGO Programmer Toy

LEGO Minifigures Series 7 – COMPUTER PROGRAMMER. Only 4 left in stock. Hurry up.

The link:

Leave a comment

April 13, 2014 · 9:31 am