Getting Started with Zend Framework 2

By Rob Allen, www.akrabat.com Document revision 0.6.0 Copyright © 2011, 2012 This tutorial is intended to give an introduction to using Zend Framework 2 by creating a simple database driven application using the Model-View-Controller paradigm. By the end you will have a working ZF2 application and you can then poke around the code to find out more about how it all works and fits together.

Note: This tutorial has been tested on RC1 of Zend Framework 2. It may work on more recent versions, but it won’t work with any previous versions.

Some assumptions
This tutorial assumes that you are running PHP 5.3.10 with the Apache web server and MySQL, accessible via the PDO extension. Your Apache installation must have the mod_rewrite extension installed and configured. You must also ensure that Apache is configured to support .htaccess files. This is usually done by changing the setting: ! to ! AllowOverride All AllowOverride None

in your httpd.conf file. Check with your distribution’s documentation for exact details. You will not be able to navigate to any page other than the home page in this tutorial if you have not configured mod_rewrite and .htaccess usage correctly.

The tutorial application
The application that we are going to build is a simple inventory system to display which albums we own. The main page will list our collection and allow us to add, edit and delete CDs. We are going to need four pages in our website:

List of albums Add new album Edit album Delete album

This will display the list of albums and provide links to edit and delete them. Also, a link to enable adding new albums will be provided. This page will provide a form for adding a new album This page will provide a form for editing an album This page will confirm that we want to delete an album and then delete it.

We will also need to store our data into a database. We will only need one table with these fields in it:

Field name id artist

Type integer varchar(100)

Null? No No

Notes Primary key, auto-increment

Field name title

Type varchar(100)

Null? No

Notes

Getting started: A skeleton application
In order to build our application, we are going to start with the ZendSkeletonApplication available from github. Go to https://github.com/zendframework/ZendSkeletonApplication and click the “Zip” button. This will download a file with a name like zendframework-ZendSkeletonApplication-zfrelease-2.0.0beta5-2-gc2c7315.zip or similar. Unzip this file into the directory where you keep all your vhosts and rename the resultant directory to zf2tutorial. ZendSkeletonApplication is set up to use Composer (http://getcomposer.org) to resolve its dependencies. In this case, the dependency is Zend Framework 2 itself. To install Zend Framework 2 into our application we simply type: php composer.phar self-update php composer.phar install from the zf2-tutorial folder. This takes a while. You should see an output like: Installing dependencies from lock file - Installing zendframework/zendframework (dev-master) Cloning 18c8e223f070deb07c17543ed938b54542aa0ed8 Generating autoload files We can now move on to the virtual host.

Virtual host
You now need to create an Apache virtual host for the application and edit your hosts file so that http://zf2tutorial.localhost will serve index.php from the zf2-tutorial/public directory. Setting up the virtual host is usually done within httpd.conf or extra/httpd-vhosts.conf. (If you are using httpd-vhosts.conf, ensure that this file is included by your main httpd.conf file.) Ensure that NameVirtualHost is defined and set to “*:80” or similar and then define a virtual host along these lines: <VirtualHost *:80> ServerName zf2-tutorial.localhost DocumentRoot /path/to/zf-2tutorial/public SetEnv APPLICATION_ENV "development" <Directory /path/to/zf2-tutorial/public> DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> Make sure that you update your /etc/hosts or c:\windows\system32\drivers\etc\hosts file so that zf2-tutorial.localhost is mapped to 127.0.0.1. The website can then be accessed using

forms and views. but we are not going to use the default one provided in this tutorial as we want our album list to be the home page.localhost. The Application module provided by the skeleton is used to provide bootstrapping. It is usually used to provide application level controllers for. Let’s start with the directories required. models. along with configuration.localhost/1234 and you should see this: If you see a standard Apache 404 error.htaccess file is working. Modules Zend Framework 2 uses a module system and you organise your main application-specific code within each module. the home page of an application. You now have a working skeleton application and we can start adding the specifics for our application. We’ll also tweak the Application module as required. which will live in our own module.http://zf2-tutorial.htaccess usage before continuing. navigate to http://zf2-tutorial. If you’ve done it right. We are going to put all our code into the Album module which will contain our controllers. error and routing configuration to the whole application. say. you should see something like this: To test that your . then you need to fix . .

'/src/' . The PHP files that contain classes within the Album namespace live in the src/Album directory so that we can have multiple namespaces within our module should we require it. 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . Create Module. ).php'. Zend Framework 2 has a ModuleManager. '/autoload_classmap. } } . class Module { public function getAutoloaderConfig() { return array( 'Zend\Loader\ClassMapAutoloader' => array( __DIR__ . '/config/module.php in the Album module: module/Album/Module.config. In order to load and configure a module.php in the root of the module directory (module/Album) and expect to find a class called Album \Module within it. } public function getConfig() { return include __DIR__ . which is the directory name of the module. ). That is. The view directory also has a sub-folder called album for our module’s view scripts.Setting up the Album module Start by creating a directory called Album under with the following subdirectories to hold the module’s files: zf2-tutorial/ /module /Album /config /src /Album /Controller /Form /Model /view /album /album ! ! As you can see the Album module has separate directories for the different types of files we will have. This will look for Module.php <?php namespace Album. ). the classes within a given module will have the namespace of the module’s name. ). __NAMESPACE__.php'.

We configure it so that we add a class map file to the ClassmapAutoloader and also add this module’s namespace to the StandardAutoloader.config.The ModuleManager will call getAutoloaderConfig() and getConfig() automatically for us. ). whenever the autoloader looks for a class within the Album namespace. you could not implement getAutoloaderConfig() and instead add "Application": "module/Application/src" to the psr-0 key in composer. The config information passed to the relevant components by the ServiceManager.php: <?php return array( 'controllers' => array( 'invokables' => array( 'Album\Controller\Album' => 'Album\Controller\AlbumController'. 1 https://gist. Create autoload_classmap. As this is an empty array. then you need to run php composer. which we’ll reference as Album \Controller\Album. The controller section provides a list of all the controllers provided by the module. let’s have a quick look at the getConfig() method in Album\Module. ). it will fall back to the to StandardAutoloader for us.com/1293323 . so we prefix with our module name.phar update to update the composer autoloading files. ). we don’t need to load files via the classmap. Create the following configuration file for the Album module: module/Album/config/module. We will need one controller. It is PSR-0 compliant and so classes map directly to files as per the PSR-0 rules 1.php with these contents: module/Album/autoload_classmap. ). ). AlbumController. If you go this way.. This method simply loads the config/module. Autoloading files Our getAutoloaderConfig() method returns an array that is compatible with ZF2’s AutoloaderFactory.config.json. '/./view'. Configuration Having registered the autoloader. We call it this as the key must be unique across all modules.php: <?php return array(). so we provide an empty array for the classmap autoloader. Note that as we are using Composer. 'view_manager' => array( 'template_path_stack' => array( 'album' => __DIR__ .php file. as an alternative.github. We need two initial sections: controller and view_manager. The standard autoloader requires a namespace and the path where to find the files for that namespace. As we are in development.

). Update this file so that its modules section contains the Album module as well so the file now looks like this: (I’ve bolded the change required) config/application.php: <?php return array( 'modules' => array( 'Application'. . for instance.local}. Hence the following pages are required: Home Add new album Edit album Delete album This will display the list of albums and provide links to edit and delete them. 'module_paths' => array( '. As you can see. ). 'Album'. '. This page will provide a form for adding a new album This page will provide a form for editing an album This page will confirm that we want to delete an album and then delete it. we have added our Album module into the list of modules after the Application module.}{global. Also. archived and view. ). 'module_listener_options' => array( 'config_glob_paths' => array( 'config/autoload/{./vendor'.php'. ). Each page of the application is known as an action and actions are grouped into controllers within modules.config. We have now set up the module ready for putting our custom code into it./module'. This is done in the application’s config/application. This will allow it to find the view scripts for the Album module that are stored in our views/ album directory. a news controller might have actions of current. Before we set up our files. The home page will list our collection and allow us to add. Informing the application about our new module We now need to tell the ModuleManager that this new module exists. you would generally group related actions into a controller.php file which is provided by the skeleton application. it’s important to understand how the framework expects the pages to be organised. ). a link to enable adding new albums will be provided.config. Hence. The pages within the website We are going to build a very simple inventory system to display our album collection.*.and within the view_manager section we add our view directory to the TemplatePathStack configuration. edit and delete albums.

'router' => array( 'routes' => array( 'album' => array( 'type' => 'segment'.. 'options' => array( 'route' => '/album[/:action][/:id]'.php file. The four actions will be: Page Home Add new album Edit album Delete album Controller AlbumController AlbumController AlbumController AlbumController Action index add edit delete The mapping of a URL to a particular action is done using routes that are defined in the module’s module. ). ). This is the updated config file with the new code added in bold. ). ). 'defaults' => array( 'controller' => 'Album\Controller\Album'. '/. 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*'.config.As we have four pages that all apply to albums./view'. 'view_manager' => array( 'template_path_stack' => array( 'album' => __DIR__ . module/Album/config/module. ). We will add a route for our album actions.php: <?php return array( 'controllers' => array( 'invokables' => array( 'Album\Controller\Album' => 'Album\Controller\AlbumController'. we will group them in a single controller AlbumController within our Album module as four actions.config. The segment route allows us to specify placeholders in the URL pattern (route) that will be mapped to named parameters in the matched route. ). In . ). The name of the route is ‘album’ and has a type of segment. ). ). 'id' => '[0-9]+'. 'action' => 'index'. ). ).

RestfulController may be useful.this case. The square brackets indicate that a segment is optional. This route allows us to have the following URLS: URL /album /album/add /album/edit/2 /album/delete/4 Page Home (list of albums) Add new album Edit album with an id of 2 Delete album with an id of 4 Action index add edit delete Create the controller We are now ready to set up our controller. use Zend\View\Model\ViewModel. Zend Framework 2 doesn’t provide many restrictions on controllers other than that they must implement the Zend\Stdlib\Dispatchable interface. so we have limited actions to starting with a letter and then subsequent characters only being alphanumeric. Each action is a public function within the controller class that is named {action name}Action.php: <?php namespace Album\Controller. underscore or hyphen. We’ll be using the standard ActionController. In this case {action name} should start with a lower case letter. The next segment will be an optional action name and then finally the next segment will be mapped to an optional id.php within the Controller directory for the module. but if you’re intending to write a RESTful web service. We also limit the id to a number. the controller is a class that is generally called {Controller name}Controller. The constraints section allows us to ensure that the characters within a segment are as expected. class AlbumController extends AbstractActionController { public function indexAction() { } public function addAction() { } public function editAction() { } . In our case that’s is module/Album/src/Album/Controller. Let’s go ahead and create our controller class: module/Album/src/Album/Controller/AlbumController. The framework provides two abstract classes that do this for us: Zend\Mvc\Controller\ActionController and Zend\Mvc \Controller\RestfulController. Note that this is by convention. Note that {Controller name} must start with a capital letter. use Zend\Mvc\Controller\AbstractActionController. In Zend Framework 2. the route is '/album[/:action][/:id]' which will match any URL that starts with /album. This class lives in a file called {Controller name}Controller.

localhost/album/delete Album\Controller\AlbumController::deleteAction() We now have a working router and the actions are set up for each page of our application. Remember that the model is the part that deals with the application’s core purpose (the so-called “business rules”) and.localhost/album http://zf2-tutorial. CREATE TABLE album ( id int(11) NOT NULL auto_increment. insert. title varchar(100) NOT NULL. and run these SQL statements to create the album table with some data in it. it is time to look at the model section of our application. starting with our database and models. The URLs for each action are: URL http://zf2-tutorial. We have now set up the four actions that we want to use. PRIMARY KEY (id) ). update and delete rows from a database table. so create a database called zf2tutorial.phtml module/Album/view/album/album/add. The database Now that we have the Album module set up with controller action methods and view scripts. via PHP’s PDO driver. INSERT INTO album (artist.config. title) . Create these four empty files now: • • • • module/Album/view/album/album/index. in our case. Initialise the view scripts To integrate the view into our application all we need to do is create some view script files. deals with the database. We will make use of Zend Framework class Zend\Db\TableGateway\TableGateway which is used to find.phtml We can now start filling everything in.php. It’s time to build the view and the model layer.localhost/album/edit Method called Album\Controller\AlbumController::indexAction() Album\Controller\AlbumController::addAction() Album\Controller\AlbumController::editAction() http://zf2-tutorial.phtml module/Album/view/album/album/delete. These view scripts are stored in our module’s views directory within a directory named after the controller. artist varchar(100) NOT NULL.public function deleteAction() { } } Note that we have already informed the module about our controller in the ‘controller’ section of config/ module.localhost/album/add http://zf2-tutorial. 'In My Dreams'). They won’t work yet until we set up the views. INSERT INTO album (artist.phtml module/Album/view/album/album/edit. title) ! VALUES ('The Military Wives'. These files will be executed by the ViewListener object within the Application module and be passed any variables that are returned from the controller action method. We are going to use MySQL.

INSERT INTO album (artist. we need to implement the exchangeArray() method. title) ! VALUES ('Gotye'. Another is to use an ORM like Doctrine or Propel. We will add an input filter for use with our form later. One approach is to have model classes that represent each entity in your application and then use mapper objects that load and save entities to the database. The model files Zend Framework does not provide a Zend\Model component as the model is your business logic and it’s up to you to decide how you want it to work. Be aware though that the Table Data Gateway pattern can become limiting in larger systems. For this tutorial. $this->title = (isset($data['title'])) ? $data['title'] : null. 'Making Mirrors'). INSERT INTO album (artist. (The test data chosen. public $title. public function exchangeArray($data) { $this->id = (isset($data['id'])) ? $data['id'] : null. } } Our Album entity object is a simple PHP class. There are many components that you can use for this depending on your needs. Don’t do this! Let’s start with our Album entity class within the Model directory: module/Album/src/Album/Model/Album. $this->artist = (isset($data['artist'])) ? $data['artist'] : null. 'Wrecking Ball (Deluxe)'). In order to work with Zend\Db’s AbstractTableGateway class. INSERT INTO album (artist. title) ! VALUES ('Lana Del Rey'. happens to be the Bestsellers on Amazon UK when I wrote this version of this tutorial!) We now have some data in a database and can write a very simple model for it. title) ! VALUES ('Bruce Springsteen'. we extend Zend\Db\TableGateway\AbstractTableGateway and create our own AlbumTable class in the module’s Model directory like this: . This is an implementation of the Table Data Gateway design pattern to allow for interfacing with data in a database table. 'Born To Die').! VALUES ('Adele'.php: <?php namespace Album\Model. Next. class Album { public $id. we are going to create a very simple model by creating an AlbumTable class that extends Zend\Db\TableGateway\TableGateway where each album object is an Album object (known as an entity). There is also a temptation to put database access code into controller action methods as these are exposed by Zend\Db\TableGateway\AbstractTableGateway. This method simply copies the data from the passed in array to our entity’s properties. '21'). public $artist.

$this->resultSetPrototype->setArrayObjectPrototype(new Album()). } public function fetchAll() { $resultSet = $this->select(). $this->initialize(). $id = (int)$album->id. use Zend\Db\ResultSet\ResultSet. } else { if ($this->getAlbum($id)) { $this->update($data. $this->resultSetPrototype = new ResultSet(). 'title' => $album->title. return $resultSet. } public function saveAlbum(Album $album) { $data = array( 'artist' => $album->artist. class AlbumTable extends AbstractTableGateway { protected $table ='album'. } else { throw new \Exception('Form id does not exist').php: <?php namespace Album\Model. array('id' => $id)). } return $row. if (!$row) { throw new \Exception("Could not find row $id"). use Zend\Db\Adapter\Adapter. ). $row = $rowset->current(). $rowset = $this->select(array('id' => $id)). } public function getAlbum($id) { $id = (int) $id. } . use Zend\Db\TableGateway\AbstractTableGateway. public function __construct(Adapter $adapter) { $this->adapter = $adapter.module/Album/src/Album/Model/AlbumTable. if ($id == 0) { $this->insert($data).

} } There’s a lot going on here.com/2012/03/09/ php-constructor-best-practices-and-the-prototype-pattern for more details. See http://ralphschindler. We then create some helper methods that our application will use to interface with the database table. Add this method to the bottom of the Module class. getAlbum() retrieves a single row as an Album object. The TableGateway classes use the prototype pattern for creation of result sets and entities. class Module { // getAutoloaderConfig() and getConfig() methods here public function getServiceConfig() { return array( 'factories' => array( 'Album\Model\AlbumTable' => function($sm) { $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'). return $table. $table = new AlbumTable($dbAdapter). }. it should use an Album object to do so. saveAlbum() either creates a new row in the database or updates a row that already exists and deleteAlbum() removes the row completely. This means that instead of instantiating when required. . We then write a constructor that takes a database adapter as its only parameter and assigns it to the adapter property of our class. fetchAll() retrieves all albums rows from the database as a ResultSet. We’ll then be able to retrieve it in our controller when we need it. We start by implementing getServiceConfig() to provide a factory that creates an AlbumTable. The code for each of these methods is. ‘album’ in this case. self-explanatory. ). This is most easily done in the Module class where we create a method called getServiceConfi() which is automatically called by the ModuleManager and applied to the ServiceManager. Firstly we set the protected property $table to the name of the database table. the system clones a previously instantiated object. hopefully. module/Album/Module. We then need to tell the table gateway’s result set that whenever it creates a new row object. Using ServiceManager to configure the database credentials and inject into the controller In order to always use the same instance of our AlbumTable. we will use the ServiceManager to define how to create one.php: <?php namespace Album.} } public function deleteAlbum($id) { $this->delete(array('id' => $id)). To configure the ServiceManager we can either supply the name of the class to be instantiated or a factory (closure or callback) that instantiates the object when the ServiceManager needs it. use Album\Model\AlbumTable.

php: return array( 'db' => array( 'username' => 'YOUR USERNAME HERE'. ).autoload/local.php so that they are not in the git repository (as local. 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES

UTF8

Related Interests

' ).global. We’ll add our database configuration information to global.php files). 'dsn' => 'mysql:dbname=zf2tutorial. Zend Framework 2’s ModuleManager merges all the configuration from each module’s module. Now that the ServiceManager can create an AlbumTable instance for us.config. You should put your database credentials in config/autoloader/local. ). ).php which you should commit to your version control system.php file and then merges in the files in config/autoload (*.You can use local. } } This method returns an array of factories that are all merged together by the ModuleManager before passing to the ServiceManager. 'password' => 'YOUR PASSWORD HERE'. Add getAlbumTable() to the AlbumController class: module/Album/src/Album/Controller/AlbumController.hostname=localhost'. ). 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory'.local.php: return array( 'db' => array( 'driver' => 'Pdo'.). ). We also need to configure the Service Manager so that it knows how to get a Zend\Db\Adapter\Adapter. we can add a method to the controller to retrieve it. This is done using a factory called Zend\Db\Adapter \AdapterServiceFactory which we can configure within the merged config system.php: public function getAlbumTable() { if (!$this->albumTable) { .php and then *.php (outside of the VCS) to store the credentials for your database if you want to.php is ignored): config. config/autoload/global. ).

Let’s start with a list of albums when the index action is called.?></td> . $this->headTitle($title). ?> <h1><?php echo $this->escapeHtml($title). We can now call getAlbumTable() from within our controller whenever we need to interact with our model. We can now fill in the index. With Zend Framework 2. to the top of the class. } /.?>">Add new album</a></p> <table class="table"> <tr> <th>Title</th> <th>Artist</th> <th>&nbsp. )). Listing albums In order to list the albums. we need to retrieve them from the model and pass them to the view. These are then automatically passed to the view script.. public function indexAction() { return new ViewModel(array( 'albums' => $this->getAlbumTable()->fetchAll(). we return a ViewModel instance where the first parameter of the constructor is an array from the action containing data we need. The ViewModel object also allows us to change the view script that is used. } You should also add: protected $albumTable..phtml: <?php $title = 'My albums'.phtml view script: module/Album/view/album/album/index.?></td> <td><?php echo $this->escapeHtml($album->artist).</th> </tr> <?php foreach($albums as $album) : ?> <tr> <td><?php echo $this->escapeHtml($album->title).. in order to set variables in the view. we fill in indexAction() within AlbumController. $this->albumTable = $sm->get('Album\Model\AlbumTable').php: /. Update the AlbumController’s indexAction() like this: module/Album/src/Album/Controller/AlbumController.$sm = $this->getServiceLocator(). but the default is to use {controller name}/{action name}.. To do this. } return $this->albumTable. ?></h1> <p><a href="<?php echo $this->url('album'. array( 'action'=>'add')).

A standard foreach: loop is used to iterate over the list of albums. We then create a table to display each album’s title. Click on “Skeleton Application” in the list of Original strings and then type in “Tutorial” as the translation. the url() view helper is used to create the edit and delete links.net/ download. In this case we use our ‘album’ route which is set up to accept two placeholder variables: action and id.po. The url() view helper is provided by Zend Framework 2 and is used to create the links we need. Note that we always use the escapeHtml() view helper to help protect ourselves from XSS vulnerabilities. 'id' => $album->id)). but we need to change the title and and remove the copyright message. Again. The first parameter to url() is the route name we wish to use for construction of the URL and then the second parameter is an array of all the variables to fit into the placeholders to use. and we use the alternate form using a colon and endforeach. .?>">Delete</a> </td> </tr> <?php endforeach. The ZendSkeletonApplication is set up to use Zend\I18n’s translation functionality for all the text. artist and provide links to allow for editing and deleting the record. 'id' => $album->id)). ?> </table> The first thing we do is to set the title for the page (used in the layout) and also set the title for the <head> section using the headTitle() view helper which will display in the browser’s title bar. as it is easier to scan than to try and match up braces. array('action'=>'delete'.php/) to change the text. It uses .<td> <a href="<?php echo $this->url('album'.?>">Edit</a> <a href="<?php echo $this->url('album'.poedit. The Zend Framework 2 view system automatically ensures that these variables are extracted into the scope of the view script. Start poedit and open application/language/en_US. We then create a link to add a new album.localhost/album you should see this: Styling We’ve picked up the SkeletonApplication’s which is fine. array('action'=>'edit'. If you open http://zf2-tutorial.po files that live in application/langauge and you need to use poedit (http://www. so that we don’t have to worry about prefixing them with $this-> as we used to have to do with Zend Framework 1. We iterate over the $albums that we assigned from the controller action. however you can do so if you wish.

mo file for us. To remove the copyright message. we need to edit the Application module’s layout.2012 by Zend Technologies Ltd.phtml view script: module/Application/view/layout/layout.Press Save in the toolbar and poedit will create an en_US. There are two bits to this part: • Display a form for user to provide details • Process the form submission and store to database .') ?></p> The page now looks ever so slightly better now! Adding new albums We can now code up the functionality to add new albums. <?php echo $this->translate('All rights reserved. 2005 .phtml: Remove this line: <p>&copy.

). Create this file file now: module/Album/src/Album/Form/AlbumForm. The Zend\Form component manages the form and for validation.php: <?php namespace Album\Form. 'post'). use Zend\Form\Form. 'options' => array( 'label' => 'Title'. we add a Zend\InputFilter to our Album entity. 'attributes' => array( 'type' => 'text'. We start by creating a new class Album\Form\AlbumForm that extends from Zend\Form\Form to define our form. 'attributes' => array( 'type' => 'hidden'. ). $this->add(array( 'name' => 'submit'. ). 'value' => 'Go'. ).php file within the module/Album/src/Album/Form directory. )). )). class AlbumForm extends Form { public function __construct($name = null) { // we want to ignore the name passed parent::__construct('album'). . $this->add(array( 'name' => 'id'. 'attributes' => array( 'type' => 'text'. 'options' => array( 'label' => 'Artist'. $this->add(array( 'name' => 'title'. $this->add(array( 'name' => 'artist'. )). ). $this->setAttribute('method'. The class is stored in the AlbumForm. 'attributes' => array( 'type' => 'submit'. 'id' => 'submitbutton'.We use Zend\Form to do this. ).

$this->artist = (isset($data['artist'])) ? $data['artist'] : null. Zend\InputFilter\InputFilterInterface. } } Within the constructor of AlbumForm. use use use use Zend\InputFilter\InputFilter. protected $inputFilter. We also need to set up validation for this form. } public function getInputFilter() { if (!$this->inputFilter) { $inputFilter = new InputFilter(). and submit button.php: <?php namespace Album\Model. such as a model entity. Zend\InputFilter\Factory as InputFactory. } public function setInputFilter(InputFilterInterface $inputFilter) { throw new \Exception("Not used"). 'filters' => array( array('name' => 'Int'). public $title. class Album implements InputFilterAwareInterface { public $id. $factory = new InputFactory(). public function exchangeArray($data) { $this->id = (isset($data['id'])) ? $data['id'] : null. 'required' => true. title. we set the name when we call the parent’s constructor and then set the method and then create four form elements for the id. $inputFilter->add($factory->createInput(array( 'name' => 'id'. In Zend Framework 2 is this done using an input filter which can either be standalone or within any class that implements InputFilterAwareInterface.)). artist. $this->title = (isset($data['title'])) ? $data['title'] : null. For each item we set various attributes and options. We are going to add the input filter to our Album entity: module/Album/src/Album/Model/Album. ). Zend\InputFilter\InputFilterAwareInterface. . including the label to be displayed. public $artist.

For the id field we add an Int filter to as we only need integers. ). $inputFilter->add($factory->createInput(array( 'name' => 'artist'. We also set them to be required and add a StringLength validator to ensure that the user doesn’t enter more characters than we can store into the database. We add one input for each property that we wish to filter or validate. array('name' => 'StringTrim'). } return $this->inputFilter. } } The InputFilterAwareInterface defines two methods: setInputFilter() and getInputFilter(). ). $this->inputFilter = $inputFilter. Within getInputFilter(). $inputFilter->add($factory->createInput(array( 'name' => 'title'. 'required' => true.))). 'filters' => array( array('name' => 'StripTags'). 'validators' => array( array( 'name' => 'StringLength'. 'validators' => array( array( 'name' => 'StringLength'. 'max' => 100. array('name' => 'StringTrim'). ). 'filters' => array( array('name' => 'StripTags'). ). ). ))). 'options' => array( 'encoding' => 'UTF-8'. ). ). For the text elements. We only need to implement getInputFilter() so we simply throw an exception in setInputFilter(). 'required' => true. 'options' => array( 'encoding' => 'UTF-8'. ))). we instantiate an InputFilter and then add the inputs that we require. . 'min' => 1. ). StripTags and StringTrim to remove unwanted HTML and unnecessary white space. 'max' => 100. we add two filters. 'min' => 1.

$form->setInputFilter($album->getInputFilter()). $form->submit->setAttribute('value'. $request = $this->getRequest(). use Album\Model\Album. $form->setInputFilter($album->getInputFilter()). if ($request->isPost()) { $album = new Album(). 'Add'). then the form has been submitted and so we set the form’s input filter from an album instance.. $form->setData($request->getPost()). We instantiate AlbumForm and set the label on the submit button to “Add”..We now need to get the form to display and then process it on submission. } } return array('form' => $form). This is done within the AlbumController’s addAction(): module/Album/src/Album/Controller/AlbumController.. if ($form->isValid()) { If the Request object’s isPost() method is true. $form->get('submit')->setAttribute('value'. . // Redirect to list of albums return $this->redirect()->toRoute('album'). if ($request->isPost()) { $album = new Album(). use Album\Form\AlbumForm. $this->getAlbumTable()->saveAlbum($album). 'Add'). $request = $this->getRequest(). use Zend\Mvc\Controller\ActionController.. if ($form->isValid()) { $album->exchangeArray($form->getData()). } //.. public function addAction() { $form = new AlbumForm(). Let’s look at the addAction() code in a little more detail: $form = new AlbumForm(). we implement addAction().. After adding the AlbumForm to the use list. //.php: //. use Zend\View\Model\ViewModel. We do this here as we’ll want to re-use the form when editing an album and will use a different label. We then set the posted data to the form and check to see if it is valid using the isValid() member function of the form. $form->setData($request->getPost()).

?> <h1><?php echo $this->escapeHtml($title). we return the variables that we want assigned to the view. $this->formInput($form->get('submit')). $form->setAttribute('action'. // Redirect to list of albums return $this->redirect()->toRoute('album'). Then for each element with a label. $this->formRow($form->get('artist')). we redirect back to the list of albums using the Redirect controller plugin.phtml view script: module/Album/view/album/album/add. Finally. we display a title as before and then we render the form. then we grab the data from the form and store to the model using saveAlbum(). $this->form()->closeTag($form). The form() view helper has an openTag() and closeTag() method which we use to open and close the form. we use formHidden() and formInput() You can use formInput(). $this->getAlbumTable()->saveAlbum($album). This saves a little typing. $this->headTitle($title). formLabel() and formElementErrors() for all fields and create specific ‘decoration’ HTML if you wanted to though. return array('form' => $form). array('action' => 'add'))). $this->url('album'. We now need to render the form in the add. If the form is valid. just the form object. $form->prepare(). Again. but for the two elements that are standalone. Note that Zend Framework 2 also allows you to simply return an array containing the variables to be assigned to the view and it will create a ViewModel behind the scenes for you. . After we have saved the new album row.$album->exchangeArray($form->getData()). Zend Framework provides some view helpers to make this a little easier. echo echo echo echo echo echo $this->form()->openTag($form). we can use formRow().phtml: <?php $title = 'Add new album'. $this->formRow($form->get('title')). ?></h1> <?php $form = $this->form. In this case. $this->formHidden($form->get('id')).

if ($request->isPost()) { $form->setData($request->getPost()). 'form' => $form. Editing an album Editing an album is almost identical to adding one. array('action'=>'add')). if ($form->isValid()) { $this->getAlbumTable()->saveAlbum($album). $request = $this->getRequest().. ). so the code is very similar. if (!$id) { return $this->redirect()->toRoute('album'. } . $form->get('submit')->setAttribute('value'. This time we use editAction() in the AlbumController: module/Album/src/Album/AlbumController. } } return array( 'id' => $id. } $album = $this->getAlbumTable()->getAlbum($id).php: //. 'Edit'). $form = new AlbumForm(). $form->bind($album).You should now be able to use the “Add new album” link on the home page of the application to add a new album record.. public function editAction() { $id = (int)$this->params('id'). // Redirect to list of albums return $this->redirect()->toRoute('album').

$this->artist = (isset($data['artist'])) ? $data['artist'] : null. so we can just call the mappers’ saveAlbum() to store the changes back to the database.. $form->get('submit')->setAttribute('value'.php: . These operations are done using a hydrator object. if (!$id) { return $this->redirect()->toRoute('album'. Firstly. we do not need to populate the form’s data back into the $album as that’s already been done. We have already written exchangeArray() in our Album entity.. . After successful validation in isValid().. but the default one is Zend\Stdlib\Hydrator\ArraySerializable which expects to find two methods in the model: getArrayCopy() and exchangeArray(). If the id is zero. } $album = $this->getAlbumTable()->getAlbum($id). The form’s bind() method attaches the model to the form. Let’s look at the differences from adding an album. so just need to write getArrayCopy(): module/Album/src/Album/Model/Album. public function exchangeArray($data) { $this->id = (isset($data['id'])) ? $data['id'] : null. As a result of using bind() with its hydrator. array('action'=>'add')).. } public function getArrayCopy() { return get_object_vars($this). 'Edit')..php.config. $this->title = (isset($data['title'])) ? $data['title'] : null. This is used in two ways: 1.. } . we continue by getting the album entity from the database. $form->bind($album). params is a controller plugin that provides a convenient way to retrieve parameters from the matched route. When displaying the form. we look for the id that is in the matched route and use it to load the album to be edited: $id = (int)$this->params('id'). the data from the form is put back into the model. This code should look comfortably familiar. the initial values for each element are extracted from the model. There are a number of hydrators. We use it to retrieve the id from the route we created in the modules’ module. other wise. $form = new AlbumForm(). then we redirect to the add action. 2.//.

$form->prepare(). ?></h1> <?php $form = $this->form. after all..phtml: <?php $title = 'Edit album'. This would be wrong. ?> <h1><?php echo $this->escapeHtml($title). we’ll code it directly into our view (Zend\Form is. $form->setAttribute('action'. array('action' => 'edit'. if ($request->isPost()) { $del = $request->getPost()->get('del'. we recall that you shouldn’t do an irreversible action using GET and should use POST instead. $this->formRow($form->get('artist')). $this->url('album'. As the form is trivial.phtml. } $request = $this->getRequest(). $this->getAlbumTable()->deleteAlbum($id). echo echo echo echo echo echo $this->form()->openTag($form). We shall show a confirmation form when the user clicks delete and if they then click “yes”. optional!).php: //. $this->form()->closeTag($form). $this->formRow($form->get('title')). Deleting an album To round out our application. we need to add deletion. if (!$id) { return $this->redirect()->toRoute('album'). $this->headTitle($title). We have a Delete link next to each album on our list page and the naïve approach would be to do a delete when it’s clicked. public function deleteAction() { $id = (int)$this->params('id'). Remembering our HTTP spec. } . 'id'=>$this->id))). The only changes are to use the ‘Edit Album’ title and set the form’s action to the ‘edit’ action too. we will do the deletion. $this->formHidden($form->get('id')). looks very similar to the one for adding an album: module/Album/view/album/album/edit. $this->formInput($form->get('submit')). 'No').The view template. You should now be able to edit albums. edit. Let’s start with the action code in AlbumController::deleteAction(): module/Album/src/Album/AlbumController.. if ($del == 'Yes') { $id = (int)$request->getPost()->get('id').

} return array( 'id' => $id. ?></h1> <p>Are you sure that you want to delete '<?php echo $this->escapeHtml($album->title). $this->headTitle($title).config. Ensuring that the home page displays the list of albums One final point. ?>'? </p> <?php $url = $this->url('album'. 'defaults' => array( 'controller' => 'Application\Controller\Index'. http://zf2-tutorial. The view script is a simple form: module/Album/view/album/album/delete..php. ?>" /> <input type="submit" name="del" value="Yes" /> <input type="submit" name="del" value="No" /> </div> </form> In this script. At the moment. If the request is not a POST. In the action. This is due to a route set up in the Application module’s module. we display a confirmation message to the user and then a form with yes and no buttons. } //. along with the id. ?>" method="post"> <div> <input type="hidden" name="id" value="<?php echo (int)$album->id.phtml: <?php $title = 'Delete album'. array('action' => 'delete'. ?>' by '<?php echo $this->escapeHtml($album->artist). 'album' => $this->getAlbumTable()->getAlbum($id) ).and check the request object’s isPost() to determine whether to show the confirmation page or to delete the album.. the home page.localhost/ doesn’t display the list of albums. 'id'=>$this->id)).// Redirect to list of albums return $this->redirect()->toRoute('album'). 'options' => array( 'route' => '/'.config. We use the table object to delete the row using the deleteAlbum() method and then redirect back the list of albums. As before. ?> <form action="<?php echo $url. .php and find the home route: 'home' => array( 'type' => 'Zend\Mvc\Router\Http\Literal'. open module/Application/config/module. we checked specifically for the “Yes” value when doing the deletion. To change it. ?> <h1><?php echo $this->escapeHtml($title). then we retrieve the correct database record and assign to the view. we get the id from the matched route.

I hope that you found it useful.'action' ). ).com/docs/latest/manual/en/index. ). If you find anything that’s wrong. ).you now have a fully working application! Conclusion This concludes our brief look at building a simple.html. My website at http://akrabat. please email me at rob@akrabat. ). 'options' => array( 'route' => '/'. ). change the controller from Application\Controller\Index to Album\Controller\Album: 'home' => array( 'type' => 'Zend\Mvc\Router\Http\Literal'. but fully functional. there aren’t that many articles about it yet. That’s it . 'defaults' => array( 'controller' => 'Album\Controller\Album'.com! As Zend Framework 2 is still in beta. . You should however check out the manual at http://packages. MVC application using Zend Framework 2. => 'index'.com contains many articles on Zend Framework and I have started covering Zend Framework 2 there too.zendframework. 'action' => 'index'.

Related Interests

UTF8","static_promo_banner_cta_url":"https://www.scribd.com/"},"eligible_for_exclusive_trial_roadblock":false,"eligible_for_seo_roadblock":false,"exclusive_free_trial_roadblock_props_path":"/doc-page/exclusive-free-trial-props/106404736","flashes":[],"footer_props":{"urls":{"about":"/about","press":"/press","blog":"http://literally.scribd.com/","careers":"/careers","contact":"/contact","plans_landing":"/subscribe","referrals":"/referrals?source=footer","giftcards":"/giftcards","faq":"/faq","accessibility":"/accessibility-policy","faq_paths":{"accounts":"https://support.scribd.com/hc/sections/202246346","announcements":"https://support.scribd.com/hc/sections/202246066","copyright":"https://support.scribd.com/hc/sections/202246086","downloading":"https://support.scribd.com/hc/articles/210135046","publishing":"https://support.scribd.com/hc/sections/202246366","reading":"https://support.scribd.com/hc/sections/202246406","selling":"https://support.scribd.com/hc/sections/202246326","store":"https://support.scribd.com/hc/sections/202246306","status":"https://support.scribd.com/hc/en-us/articles/360001202872","terms":"https://support.scribd.com/hc/sections/202246126","writing":"https://support.scribd.com/hc/sections/202246366","adchoices":"https://support.scribd.com/hc/articles/210129366","paid_features":"https://support.scribd.com/hc/sections/202246306","failed_uploads":"https://support.scribd.com/hc/en-us/articles/210134586-Troubleshooting-uploads-and-conversions","copyright_infringement":"https://support.scribd.com/hc/en-us/articles/210128946-DMCA-copyright-infringement-takedown-notification-policy","end_user_license":"https://support.scribd.com/hc/en-us/articles/210129486","terms_of_use":"https://support.scribd.com/hc/en-us/articles/210129326-General-Terms-of-Use"},"publishers":"/publishers","static_terms":"/terms","static_privacy":"/privacy","copyright":"/copyright","ios_app":"https://itunes.apple.com/us/app/scribd-worlds-largest-online/id542557212?mt=8&uo=4&at=11lGEE","android_app":"https://play.google.com/store/apps/details?id=com.scribd.app.reader0&hl=en","books":"/books","sitemap":"/directory"}},"global_nav_props":{"header_props":{"logo_src":"/images/landing/home2_landing/scribd_logo_horiz_small.svg","root_url":"https://www.scribd.com/","search_term":"","small_logo_src":"/images/logos/scribd_s_logo.png","uploads_url":"/upload-document","search_props":{"redirect_to_app":true,"search_url":"/search","query":"","search_page":false}},"user_menu_props":null,"sidebar_props":{"urls":{"bestsellers":"https://www.scribd.com/bestsellers","home":"https://www.scribd.com/","saved":"/saved","subscribe":"/archive/pmp_checkout?doc=106404736&metadata=%7B%22context%22%3A%22pmp%22%2C%22action%22%3A%22start_trial%22%2C%22logged_in%22%3Afalse%2C%22platform%22%3A%22web%22%7D","top_charts":"/bestsellers","upload":"https://www.scribd.com/upload-document"},"categories":{"book":{"icon":"icon-ic_book","icon_filled":"icon-ic_book_fill","url":"https://www.scribd.com/books","name":"Books","type":"book"},"news":{"icon":"icon-ic_articles","icon_filled":"icon-ic_articles_fill","url":"https://www.scribd.com/news","name":"News","type":"news"},"audiobook":{"icon":"icon-ic_audiobook","icon_filled":"icon-ic_audiobook_fill","url":"https://www.scribd.com/audiobooks","name":"Audiobooks","type":"audiobook"},"magazine":{"icon":"icon-ic_magazine","icon_filled":"icon-ic_magazine_fill","url":"https://www.scribd.com/magazines","name":"Magazines","type":"magazine"},"document":{"icon":"icon-ic_document","icon_filled":"icon-ic_document_fill","url":"https://www.scribd.com/docs","name":"Documents","type":"document"},"sheet_music":{"icon":"icon-ic_songbook","icon_filled":"icon-ic_songbook_fill","url":"https://www.scribd.com/sheetmusic","name":"Sheet Music","type":"sheet_music"},"summary":{"icon":"icon-ic_globalnav_snapshot","icon_filled":"icon-ic_globalnav_snapshot_fill","url":"https://www.scribd.com/snapshots","name":"Snapshots","type":"summary"}},"nav_categories":["mixed","book","audiobook","magazine","document","sheet_music"],"selected_content_type":"mixed","username":"","search_overlay_props":{"search_input_props":{"focused":false,"keep_suggestions_on_blur":false}}}},"recommenders":{"related_titles_recommender":{"ids":[35219883,116216825,356909277,191211292,91612143,332024589,6701876,295343611,209355407,335361406,260115407,80578150,37876497,121842523,148596147,79325283,65299679,36388755,246730409,256051000,187959251,356755331,214318198,322522909,274363284,219586426,314934095,250854139,36101288,308034016,244157917,212863738,253264900,239488191,263504218,282766939,163646054,224419023,224258670,224369806,238704340,224355300,225916486,293461549,224410295,211302755,202691564,239588474,182553141,234028503,224326250,224426877,224349281,337536061,249309502,254039238,182565115,224306619,273440534,273582508,182546874,249308781,224285255,224252178,250006950,235583696,231689346,224248577,224270540,163580087,235411767,224248520,163564256,249308236,246897514,182560283,163579056,163647832,163603389,216442529,182522032,224266633,224420008],"title_link":null,"title":null,"track_opts":{"compilation_id":"HiBsu8F8jWXs1Ct+4oIaGeIGWZE=","module_id":"UN7ie6SsK5TooYZT7Z79QGdjgXA=","widget_name":"right sidebar","track_id":"flattened_recommender"}},"footer_recommenders":{"recommenders":[{"ids":[35219883,116216825,356909277,191211292,91612143,332024589,6701876,295343611,209355407,335361406,260115407,80578150,37876497,121842523,148596147,79325283,65299679,36388755,246730409,256051000,187959251,356755331,214318198,322522909,274363284,219586426,314934095,250854139,36101288,308034016],"title_link":null,"title":"Documents Similar To Getting Started With Zend Framework 2","track_opts":{"compilation_id":"HiBsu8F8jWXs1Ct+4oIaGeIGWZE=","module_id":"/vDX9TYbXjZvqCvgCvgCwLz8n/0=","widget_name":"document_carousel"}}]},"seo_new_docs_recommenders":{"recommenders":[]},"documents":{"6701876":{"type":"document","id":6701876,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/6701876/149x198/a1776b80f5/1395169337?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/6701876/298x396/f001a7dcc2/1395169337?v=1","title":"What is PHP","short_title":"What is PHP","author":"api-3730987","tracking":{"object_type":"document","object_id":6701876,"track":"flattened_recommender","doc_uuid":"v8hxHuLRBr3qW9PTghKUJBjT6P4="},"url":"https://www.scribd.com/document/6701876/What-is-PHP","top_badge":null},"35219883":{"type":"document","id":35219883,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/35219883/149x198/5b26a1a4ba/1354120009?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/35219883/298x396/b79435d57a/1354120009?v=1","title":"yii-guide-1.1.1","short_title":"yii-guide-1.1.1","author":"momanyicharles196702","tracking":{"object_type":"document","object_id":35219883,"track":"flattened_recommender","doc_uuid":"/Q/Tk61TAMRznUifa2VCTXh/6U4="},"url":"https://www.scribd.com/document/35219883/yii-guide-1-1-1","top_badge":null},"36101288":{"type":"document","id":36101288,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/36101288/149x198/e6d6bd5b8d/1337892662?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/36101288/298x396/7ab69f78aa/1337892662?v=1","title":"p1","short_title":"p1","author":"Gousmohaddin Haveli","tracking":{"object_type":"document","object_id":36101288,"track":"flattened_recommender","doc_uuid":"MPQvsJQYRto507eiCpHWDltS/3Q="},"url":"https://www.scribd.com/document/36101288/p1","top_badge":null},"36388755":{"type":"document","id":36388755,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/36388755/149x198/1206b50fbb/1417973957?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/36388755/298x396/18f4983760/1417973957?v=1","title":"Tequilla Tutorial","short_title":"Tequilla Tutorial","author":"handsomeman","tracking":{"object_type":"document","object_id":36388755,"track":"flattened_recommender","doc_uuid":"j/u6FkRg0odKXAM0ZY5ilValzd4="},"url":"https://www.scribd.com/document/36388755/Tequilla-Tutorial","top_badge":null},"37876497":{"type":"document","id":37876497,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/37876497/149x198/6c58133c38/1363165915?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/37876497/298x396/b9b49a300d/1363165915?v=1","title":"API PHP Class - MikroTik Wiki","short_title":"API PHP Class - MikroTik Wiki","author":"Wahyudi Bukhari","tracking":{"object_type":"document","object_id":37876497,"track":"flattened_recommender","doc_uuid":"VxZtcY5aes+32TDvUwjmVGpKHQY="},"url":"https://www.scribd.com/document/37876497/API-PHP-Class-MikroTik-Wiki","top_badge":null},"65299679":{"type":"document","id":65299679,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/65299679/149x198/d617145bdb/1351181985?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/65299679/298x396/547c507905/1351181985?v=1","title":"Creating a PHP Framework","short_title":"Creating a PHP Framework","author":"tito2k","tracking":{"object_type":"document","object_id":65299679,"track":"flattened_recommender","doc_uuid":"ruRbpAEf4DUqRhqNB2emEk8A4pY="},"url":"https://www.scribd.com/document/65299679/Creating-a-PHP-Framework","top_badge":null},"79325283":{"type":"document","id":79325283,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/79325283/149x198/f95ca09c67/1399953671?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/79325283/298x396/a5036aec14/1399953671?v=1","title":"CENG547 – Advanced Database Systems","short_title":"CENG547 – Advanced Database Systems","author":"ligthyman","tracking":{"object_type":"document","object_id":79325283,"track":"flattened_recommender","doc_uuid":"pIjy24yCULNsQ4eAOs3W+hBoOzM="},"url":"https://www.scribd.com/presentation/79325283/CENG547-Advanced-Database-Systems","top_badge":null},"80578150":{"type":"document","id":80578150,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/80578150/149x198/5f66620c3b/1423218781?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/80578150/298x396/91cfa743b1/1423218781?v=1","title":"Getting Started With Zend Framework 2","short_title":"Getting Started With Zend Framework 2","author":"sergabrod","tracking":{"object_type":"document","object_id":80578150,"track":"flattened_recommender","doc_uuid":"99de8nRYBoFqN5196Edo5LKio7k="},"url":"https://www.scribd.com/document/80578150/Getting-Started-With-Zend-Framework-2","top_badge":null},"91612143":{"type":"document","id":91612143,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/91612143/149x198/490ada0ae4/1393906087?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/91612143/298x396/7df1b09ca3/1393906087?v=1","title":"1","short_title":"1","author":"wishpond","tracking":{"object_type":"document","object_id":91612143,"track":"flattened_recommender","doc_uuid":"4tIi+7o49TQR4mbEcH4wHPZAKeY="},"url":"https://www.scribd.com/document/91612143/1","top_badge":null},"116216825":{"type":"document","id":116216825,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/116216825/149x198/59a695eb18/1355132562?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/116216825/298x396/d66e7c39bd/1355132562?v=1","title":"Readme","short_title":"Readme","author":"edit.tools","tracking":{"object_type":"document","object_id":116216825,"track":"flattened_recommender","doc_uuid":"W3pKMUDcC8HvP5VP6DyVLVt2sJg="},"url":"https://www.scribd.com/document/116216825/Readme","top_badge":null},"121842523":{"type":"document","id":121842523,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/121842523/149x198/3a023c0d04/1358972850?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/121842523/298x396/8a7923fbbb/1358972850?v=1","title":"Form Builder","short_title":"Form Builder","author":"Dhiresh Verma","tracking":{"object_type":"document","object_id":121842523,"track":"flattened_recommender","doc_uuid":"w8mthuNcokbuoDCocnpHN/DempU="},"url":"https://www.scribd.com/document/121842523/Form-Builder","top_badge":null},"148596147":{"type":"document","id":148596147,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/148596147/149x198/f6437b8fb5/1417407455?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/148596147/298x396/384f4a0a88/1417407455?v=1","title":"Lee Gumnic Resume\r\n","short_title":"Lee Gumnic Resume\r\n","author":"Lee Gumnic","tracking":{"object_type":"document","object_id":148596147,"track":"flattened_recommender","doc_uuid":"cRmjxixMePwZS4PepLP2OKUbuck="},"url":"https://www.scribd.com/document/148596147/Lee-Gumnic-Resume","top_badge":null},"163564256":{"type":"book","id":163564256,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163564256/149x198/4d140b8606/1540136833?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163564256/298x396/3f016be665/1540136833?v=1","title":"Beautiful Ruins: A Novel","short_title":"Beautiful Ruins","author":"Jess Walter","tracking":{"object_type":"document","object_id":163564256,"track":"flattened_recommender","doc_uuid":"rnEEZOvvRaZYBAt5uMkDEEjcbhY="},"url":"https://www.scribd.com/book/163564256/Beautiful-Ruins-A-Novel","top_badge":null},"163579056":{"type":"book","id":163579056,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163579056/149x198/e3ae8b9345/1540142489?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163579056/298x396/c599e1583f/1540142489?v=1","title":"The Art of Racing in the Rain: A Novel","short_title":"The Art of Racing in the Rain","author":"Garth Stein","tracking":{"object_type":"document","object_id":163579056,"track":"flattened_recommender","doc_uuid":"llk7qrN65S2MEgJdUX+3NTnHTjc="},"url":"https://www.scribd.com/book/163579056/The-Art-of-Racing-in-the-Rain-A-Novel","top_badge":null},"163580087":{"type":"book","id":163580087,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163580087/149x198/df75726300/1540143826?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163580087/298x396/012861be61/1540143826?v=1","title":"Bel Canto","short_title":"Bel Canto","author":"Ann Patchett","tracking":{"object_type":"document","object_id":163580087,"track":"flattened_recommender","doc_uuid":"4pZjnYOt9HoWIo640Am3r50rOHY="},"url":"https://www.scribd.com/book/163580087/Bel-Canto","top_badge":null},"163603389":{"type":"book","id":163603389,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163603389/149x198/7c1ceeb759/1540148090?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163603389/298x396/2c8c5e4da3/1540148090?v=1","title":"A Prayer for Owen Meany: A Novel","short_title":"A Prayer for Owen Meany","author":"John Irving","tracking":{"object_type":"document","object_id":163603389,"track":"flattened_recommender","doc_uuid":"YaCAnxo0IIOtUHs5smNVjL3JgJ8="},"url":"https://www.scribd.com/book/163603389/A-Prayer-for-Owen-Meany-A-Novel","top_badge":null},"163646054":{"type":"book","id":163646054,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163646054/149x198/73d89ab0b4/1540136106?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163646054/298x396/92feb6c9c7/1540136106?v=1","title":"Devil in the Grove: Thurgood Marshall, the Groveland Boys, and the Dawn of a New America","short_title":"Devil in the Grove","author":"Gilbert King","tracking":{"object_type":"document","object_id":163646054,"track":"flattened_recommender","doc_uuid":"S5JvUfdfuhHmjALILnnv1QqXTC8="},"url":"https://www.scribd.com/book/163646054/Devil-in-the-Grove-Thurgood-Marshall-the-Groveland-Boys-and-the-Dawn-of-a-New-America","top_badge":null},"163647832":{"type":"book","id":163647832,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163647832/149x198/974fcd39b2/1540135556?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163647832/298x396/58f221bfa6/1540135556?v=1","title":"The Cider House Rules","short_title":"The Cider House Rules","author":"John Irving","tracking":{"object_type":"document","object_id":163647832,"track":"flattened_recommender","doc_uuid":"jvntjdSuLtmZx/2HTj8GL+8REdo="},"url":"https://www.scribd.com/book/163647832/The-Cider-House-Rules","top_badge":null},"182522032":{"type":"book","id":182522032,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182522032/149x198/e1b9e42cb5/1540136480?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182522032/298x396/ddcc62ae69/1540136480?v=1","title":"The Bonfire of the Vanities: A Novel","short_title":"The Bonfire of the Vanities","author":"Tom Wolfe","tracking":{"object_type":"document","object_id":182522032,"track":"flattened_recommender","doc_uuid":"FeP2d0WrDy8hZUOFQh/cliwcO7o="},"url":"https://www.scribd.com/book/182522032/The-Bonfire-of-the-Vanities-A-Novel","top_badge":null},"182546874":{"type":"book","id":182546874,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182546874/149x198/f82b3526b2/1540143894?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182546874/298x396/8079e74998/1540143894?v=1","title":"The Love Affairs of Nathaniel P.: A Novel","short_title":"The Love Affairs of Nathaniel P.","author":"Adelle Waldman","tracking":{"object_type":"document","object_id":182546874,"track":"flattened_recommender","doc_uuid":"9pYGnJ2J7XLiptAHRTOyhylVNho="},"url":"https://www.scribd.com/book/182546874/The-Love-Affairs-of-Nathaniel-P-A-Novel","top_badge":null},"182553141":{"type":"book","id":182553141,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182553141/149x198/9d8b4953ee/1540142861?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182553141/298x396/89521cc859/1540142861?v=1","title":"The World Is Flat 3.0: A Brief History of the Twenty-first Century","short_title":"The World Is Flat 3.0","author":"Thomas L. Friedman","tracking":{"object_type":"document","object_id":182553141,"track":"flattened_recommender","doc_uuid":"JdnhjsMUSEZDNCy+E7PCkGZ4hlM="},"url":"https://www.scribd.com/book/182553141/The-World-Is-Flat-3-0-A-Brief-History-of-the-Twenty-first-Century","top_badge":null},"182560283":{"type":"book","id":182560283,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182560283/149x198/0601b1931c/1540140610?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182560283/298x396/f6a21d4103/1540140610?v=1","title":"Wolf Hall: A Novel","short_title":"Wolf Hall","author":"Hilary Mantel","tracking":{"object_type":"document","object_id":182560283,"track":"flattened_recommender","doc_uuid":"zMybHxRjY/5V1YcnaCCb0Qw8hYk="},"url":"https://www.scribd.com/book/182560283/Wolf-Hall-A-Novel","top_badge":null},"182565115":{"type":"book","id":182565115,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182565115/149x198/825ad48fb6/1540141909?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182565115/298x396/e6af4ca8dd/1540141909?v=1","title":"The Silver Linings Playbook: A Novel","short_title":"The Silver Linings Playbook","author":"Matthew Quick","tracking":{"object_type":"document","object_id":182565115,"track":"flattened_recommender","doc_uuid":"Ua6gLAsg7aFMALRyX0KLt3cnshs="},"url":"https://www.scribd.com/book/182565115/The-Silver-Linings-Playbook-A-Novel","top_badge":null},"187959251":{"type":"document","id":187959251,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/187959251/149x198/aba828a8ed/1385733903?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/187959251/298x396/df88e33a2e/1385733903?v=1","title":"bad804q015a1_OracleMOCExtension","short_title":"bad804q015a1_OracleMOCExtension","author":"jhuskanovic","tracking":{"object_type":"document","object_id":187959251,"track":"flattened_recommender","doc_uuid":"Bf3IUkr8n903HuZ6ichZYx0MI3o="},"url":"https://www.scribd.com/document/187959251/bad804q015a1-OracleMOCExtension","top_badge":null},"191211292":{"type":"document","id":191211292,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/191211292/149x198/e8830fe4c7/1386891584?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/191211292/298x396/f68ddce605/1386891584?v=1","title":"When Should I Rebuild My Indexes","short_title":"When Should I Rebuild My Indexes","author":"alok_mishra4533","tracking":{"object_type":"document","object_id":191211292,"track":"flattened_recommender","doc_uuid":"o2P1qM1Z/zoRODCiw5X2AiarO+k="},"url":"https://www.scribd.com/document/191211292/When-Should-I-Rebuild-My-Indexes","top_badge":null},"202691564":{"type":"book","id":202691564,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/202691564/149x198/de3999cc66/1540145833?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/202691564/298x396/0ba4b4666c/1540145833?v=1","title":"Smart People Should Build Things: How to Restore Our Culture of Achievement, Build a Path for Entrepreneurs, and Create New Jobs in America","short_title":"Smart People Should Build Things","author":"Andrew Yang","tracking":{"object_type":"document","object_id":202691564,"track":"flattened_recommender","doc_uuid":"AusF/T/IqiZipOAh/7FkSR/CKfs="},"url":"https://www.scribd.com/book/202691564/Smart-People-Should-Build-Things-How-to-Restore-Our-Culture-of-Achievement-Build-a-Path-for-Entrepreneurs-and-Create-New-Jobs-in-America","top_badge":null},"209355407":{"type":"document","id":209355407,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/209355407/149x198/109c74812d/1448564339?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/209355407/298x396/2fd230d0c4/1448564339?v=1","title":"Atlantic Park Hotel Management System","short_title":"Atlantic Park Hotel Management System","author":"Irfan Efendi Gea","tracking":{"object_type":"document","object_id":209355407,"track":"flattened_recommender","doc_uuid":"q9qqOsnpWdTanOwIGErvv9g7oD0="},"url":"https://www.scribd.com/document/209355407/Atlantic-Park-Hotel-Management-System","top_badge":null},"211302755":{"type":"book","id":211302755,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/211302755/149x198/e130bab094/1540147002?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/211302755/298x396/19f10ceb3f/1540147002?v=1","title":"The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers","short_title":"The Hard Thing About Hard Things","author":"Ben Horowitz","tracking":{"object_type":"document","object_id":211302755,"track":"flattened_recommender","doc_uuid":"zzuoysb6eTlNmVCIwcJ/UcHT0Zw="},"url":"https://www.scribd.com/book/211302755/The-Hard-Thing-About-Hard-Things-Building-a-Business-When-There-Are-No-Easy-Answers","top_badge":null},"212863738":{"type":"book","id":212863738,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/212863738/149x198/486257e90d/1540144658?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/212863738/298x396/40684a0550/1540144658?v=1","title":"The Unwinding: An Inner History of the New America","short_title":"The Unwinding","author":"George Packer","tracking":{"object_type":"document","object_id":212863738,"track":"flattened_recommender","doc_uuid":"RCZIS+cbL8VCGueP1bTMVyQKgN4="},"url":"https://www.scribd.com/book/212863738/The-Unwinding-An-Inner-History-of-the-New-America","top_badge":null},"214318198":{"type":"document","id":214318198,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/214318198/149x198/e5735d2999/1395708065?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/214318198/298x396/9a6cf613fc/1395708065?v=1","title":"Model View Controller - Inside View","short_title":"Model View Controller - Inside View","author":"KanmaniKarthik","tracking":{"object_type":"document","object_id":214318198,"track":"flattened_recommender","doc_uuid":"8CPfsY3+oFbu5JIa3rVkbQBQgpk="},"url":"https://www.scribd.com/presentation/214318198/Model-View-Controller-Inside-View","top_badge":null},"216442529":{"type":"book","id":216442529,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/216442529/149x198/e28b506e87/1540137183?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/216442529/298x396/716aaad647/1540137183?v=1","title":"Lovers at the Chameleon Club, Paris 1932: A Novel","short_title":"Lovers at the Chameleon Club, Paris 1932","author":"Francine Prose","tracking":{"object_type":"document","object_id":216442529,"track":"flattened_recommender","doc_uuid":"oeXEb5grrwKlROtd0mv+SkixkC0="},"url":"https://www.scribd.com/book/216442529/Lovers-at-the-Chameleon-Club-Paris-1932-A-Novel","top_badge":null},"219586426":{"type":"document","id":219586426,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/219586426/149x198/a0d3830961/1398157067?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/219586426/298x396/bf9a98a2fa/1398157067?v=1","title":"Php Readme","short_title":"Php Readme","author":"Adita Rini Susilowati","tracking":{"object_type":"document","object_id":219586426,"track":"flattened_recommender","doc_uuid":"VuXKMM2rsuvJAG52qSb0ujQDCVk="},"url":"https://www.scribd.com/document/219586426/Php-Readme","top_badge":null},"224248520":{"type":"book","id":224248520,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224248520/149x198/0427bca488/1540147699?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224248520/298x396/505053db71/1540147699?v=1","title":"The Kitchen House: A Novel","short_title":"The Kitchen House","author":"Kathleen Grissom","tracking":{"object_type":"document","object_id":224248520,"track":"flattened_recommender","doc_uuid":"mYUNJ9cEX8Iu8HZNLO8AuvLp+T8="},"url":"https://www.scribd.com/book/224248520/The-Kitchen-House-A-Novel","top_badge":null},"224248577":{"type":"book","id":224248577,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224248577/149x198/97fab15653/1540133544?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224248577/298x396/35883a5fcb/1540133544?v=1","title":"The Rosie Project: A Novel","short_title":"The Rosie Project","author":"Graeme Simsion","tracking":{"object_type":"document","object_id":224248577,"track":"flattened_recommender","doc_uuid":"yxcG8uLg1Tfo0dwn2tW9o6r3T10="},"url":"https://www.scribd.com/book/224248577/The-Rosie-Project-A-Novel","top_badge":null},"224252178":{"type":"book","id":224252178,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224252178/149x198/77a859fdd8/1540138966?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224252178/298x396/dfbec9e04b/1540138966?v=1","title":"Brooklyn: A Novel","short_title":"Brooklyn","author":"Colm Toibin","tracking":{"object_type":"document","object_id":224252178,"track":"flattened_recommender","doc_uuid":"2OvGuy0voPxouPNx8m69N0FuA2Q="},"url":"https://www.scribd.com/book/224252178/Brooklyn-A-Novel","top_badge":null},"224258670":{"type":"book","id":224258670,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224258670/149x198/b2ee6fe90c/1540151031?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224258670/298x396/eb9e673a3c/1540151031?v=1","title":"The Prize: The Epic Quest for Oil, Money & Power","short_title":"The Prize","author":"Daniel Yergin","tracking":{"object_type":"document","object_id":224258670,"track":"flattened_recommender","doc_uuid":"U8Js/Wd6zIlkFVduu+UrKvrvyrs="},"url":"https://www.scribd.com/book/224258670/The-Prize-The-Epic-Quest-for-Oil-Money-Power","top_badge":null},"224266633":{"type":"book","id":224266633,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224266633/149x198/196f9b9902/1540151326?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224266633/298x396/c65dbae83f/1540151326?v=1","title":"The Perks of Being a Wallflower","short_title":"The Perks of Being a Wallflower","author":"Stephen Chbosky","tracking":{"object_type":"document","object_id":224266633,"track":"flattened_recommender","doc_uuid":"N6p2iXt2VpzcVuvSaW3MXo0/wf8="},"url":"https://www.scribd.com/book/224266633/The-Perks-of-Being-a-Wallflower","top_badge":null},"224270540":{"type":"book","id":224270540,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224270540/149x198/246ef7879c/1540150455?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224270540/298x396/b9d115f691/1540150455?v=1","title":"The Master","short_title":"The Master","author":"Colm Toibin","tracking":{"object_type":"document","object_id":224270540,"track":"flattened_recommender","doc_uuid":"nDYsFqaBK88HbUK4wBJFfG7lHlc="},"url":"https://www.scribd.com/book/224270540/The-Master","top_badge":null},"224285255":{"type":"book","id":224285255,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224285255/149x198/a61ed79e9b/1540133491?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224285255/298x396/a6488a57c8/1540133491?v=1","title":"The Flamethrowers: A Novel","short_title":"The Flamethrowers","author":"Rachel Kushner","tracking":{"object_type":"document","object_id":224285255,"track":"flattened_recommender","doc_uuid":"nZGWgXvefBwtx9MYKqotjayxOtA="},"url":"https://www.scribd.com/book/224285255/The-Flamethrowers-A-Novel","top_badge":null},"224306619":{"type":"book","id":224306619,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224306619/149x198/5a300f585d/1540147564?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224306619/298x396/21c3e990fc/1540147564?v=1","title":"The Light Between Oceans: A Novel","short_title":"The Light Between Oceans","author":"M.L. Stedman","tracking":{"object_type":"document","object_id":224306619,"track":"flattened_recommender","doc_uuid":"j6Yi62lxd2kx8bric5at8vMwBTQ="},"url":"https://www.scribd.com/book/224306619/The-Light-Between-Oceans-A-Novel","top_badge":null},"224326250":{"type":"book","id":224326250,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224326250/149x198/f1e7bf86b3/1540144043?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224326250/298x396/67d6eee06a/1540144043?v=1","title":"Steve Jobs","short_title":"Steve Jobs","author":"Walter Isaacson","tracking":{"object_type":"document","object_id":224326250,"track":"flattened_recommender","doc_uuid":"mztS/KQfy/vY1gHT5fyI9grIhxQ="},"url":"https://www.scribd.com/book/224326250/Steve-Jobs","top_badge":null},"224349281":{"type":"book","id":224349281,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224349281/149x198/c8e6142eca/1540152317?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224349281/298x396/121ea6d44a/1540152317?v=1","title":"How To Win Friends and Influence People","short_title":"How To Win Friends and Influence People","author":"Dale Carnegie","tracking":{"object_type":"document","object_id":224349281,"track":"flattened_recommender","doc_uuid":"Q2395yfolN3mjUhN50igUfbdf1A="},"url":"https://www.scribd.com/book/224349281/How-To-Win-Friends-and-Influence-People","top_badge":null},"224355300":{"type":"book","id":224355300,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224355300/149x198/e0393734b6/1540140558?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224355300/298x396/fac4cdb725/1540140558?v=1","title":"Grand Pursuit: The Story of Economic Genius","short_title":"Grand Pursuit","author":"Sylvia Nasar","tracking":{"object_type":"document","object_id":224355300,"track":"flattened_recommender","doc_uuid":"8cyHJ9ATSxWzwAYWsaqUZ/4A1No="},"url":"https://www.scribd.com/book/224355300/Grand-Pursuit-The-Story-of-Economic-Genius","top_badge":null},"224369806":{"type":"book","id":224369806,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224369806/149x198/d2fc5923b8/1540140509?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224369806/298x396/a026add765/1540140509?v=1","title":"The Emperor of All Maladies: A Biography of Cancer","short_title":"The Emperor of All Maladies","author":"Siddhartha Mukherjee","tracking":{"object_type":"document","object_id":224369806,"track":"flattened_recommender","doc_uuid":"+Rlrm/yon6Q1uJBM0jsEMZslrsk="},"url":"https://www.scribd.com/book/224369806/The-Emperor-of-All-Maladies-A-Biography-of-Cancer","top_badge":null},"224410295":{"type":"book","id":224410295,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224410295/149x198/5f74dd59cd/1540140140?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224410295/298x396/58644b8626/1540140140?v=1","title":"Team of Rivals: The Political Genius of Abraham Lincoln","short_title":"Team of Rivals","author":"Doris Kearns Goodwin","tracking":{"object_type":"document","object_id":224410295,"track":"flattened_recommender","doc_uuid":"+lwZKalyWHswLwfgt5nZ06xvnkM="},"url":"https://www.scribd.com/book/224410295/Team-of-Rivals-The-Political-Genius-of-Abraham-Lincoln","top_badge":null},"224419023":{"type":"book","id":224419023,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224419023/149x198/7e946216e0/1540140234?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224419023/298x396/08758c4819/1540140234?v=1","title":"John Adams","short_title":"John Adams","author":"David McCullough","tracking":{"object_type":"document","object_id":224419023,"track":"flattened_recommender","doc_uuid":"qkXKGqSbNkB7kbR0/BhON01nAL8="},"url":"https://www.scribd.com/book/224419023/John-Adams","top_badge":null},"224420008":{"type":"book","id":224420008,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224420008/149x198/7a7e91eff2/1540137197?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224420008/298x396/7fdc43e330/1540137197?v=1","title":"The Constant Gardener: A Novel","short_title":"The Constant Gardener","author":"John le Carré","tracking":{"object_type":"document","object_id":224420008,"track":"flattened_recommender","doc_uuid":"vpvvJRnCOjzojkO6pQhYLEzwzis="},"url":"https://www.scribd.com/book/224420008/The-Constant-Gardener-A-Novel","top_badge":null},"224426877":{"type":"book","id":224426877,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224426877/149x198/67b53f7428/1540137214?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224426877/298x396/61c4862b68/1540137214?v=1","title":"Angela's Ashes: A Memoir","short_title":"Angela's Ashes","author":"Frank McCourt","tracking":{"object_type":"document","object_id":224426877,"track":"flattened_recommender","doc_uuid":"Fy9Nhxc77UoR4+vDHd+EgSYZa8M="},"url":"https://www.scribd.com/book/224426877/Angela-s-Ashes-A-Memoir","top_badge":null},"225916486":{"type":"book","id":225916486,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/225916486/149x198/ceefd53ff2/1540143245?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/225916486/298x396/3fda0d41f4/1540143245?v=1","title":"A Heartbreaking Work Of Staggering Genius: A Memoir Based on a True Story","short_title":"A Heartbreaking Work Of Staggering Genius","author":"Dave Eggers","tracking":{"object_type":"document","object_id":225916486,"track":"flattened_recommender","doc_uuid":"MVWvOrQTZYhs4SK4cmHiE4yrxXY="},"url":"https://www.scribd.com/book/225916486/A-Heartbreaking-Work-Of-Staggering-Genius-A-Memoir-Based-on-a-True-Story","top_badge":null},"231689346":{"type":"book","id":231689346,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/231689346/149x198/8820ffce2e/1540133769?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/231689346/298x396/8022aee462/1540133769?v=1","title":"The Blazing World: A Novel","short_title":"The Blazing World","author":"Siri Hustvedt","tracking":{"object_type":"document","object_id":231689346,"track":"flattened_recommender","doc_uuid":"Dw2J0WDn2qS6VzQw6+jEamZbrC8="},"url":"https://www.scribd.com/book/231689346/The-Blazing-World-A-Novel","top_badge":null},"234028503":{"type":"book","id":234028503,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/234028503/149x198/600d1fe3f9/1540145261?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/234028503/298x396/1455400f40/1540145261?v=1","title":"Bad Feminist: Essays","short_title":"Bad Feminist","author":"Roxane Gay","tracking":{"object_type":"document","object_id":234028503,"track":"flattened_recommender","doc_uuid":"KN2dhUOxy86FtLLvudWTfHE27C0="},"url":"https://www.scribd.com/book/234028503/Bad-Feminist-Essays","top_badge":null},"235411767":{"type":"book","id":235411767,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/235411767/149x198/ce356815f8/1540140006?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/235411767/298x396/a289a2fc2a/1540140006?v=1","title":"A Man Called Ove: A Novel","short_title":"A Man Called Ove","author":"Fredrik Backman","tracking":{"object_type":"document","object_id":235411767,"track":"flattened_recommender","doc_uuid":"BvNuBRSDO5t2oEEBXgUkwPcicZ0="},"url":"https://www.scribd.com/book/235411767/A-Man-Called-Ove-A-Novel","top_badge":null},"235583696":{"type":"book","id":235583696,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/235583696/149x198/29700e772d/1540146753?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/235583696/298x396/46800f01c6/1540146753?v=1","title":"We Are Not Ourselves: A Novel","short_title":"We Are Not Ourselves","author":"Matthew Thomas","tracking":{"object_type":"document","object_id":235583696,"track":"flattened_recommender","doc_uuid":"h2C/TuTcM1LR+UIynIMrp2E+urc="},"url":"https://www.scribd.com/book/235583696/We-Are-Not-Ourselves-A-Novel","top_badge":null},"238704340":{"type":"book","id":238704340,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/238704340/149x198/58ed32b584/1540142456?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/238704340/298x396/d84f33deab/1540142456?v=1","title":"This Changes Everything: Capitalism vs. The Climate","short_title":"This Changes Everything","author":"Naomi Klein","tracking":{"object_type":"document","object_id":238704340,"track":"flattened_recommender","doc_uuid":"vam7uoL/I8h16LrraLHwrwWxnIE="},"url":"https://www.scribd.com/book/238704340/This-Changes-Everything-Capitalism-vs-The-Climate","top_badge":null},"239488191":{"type":"book","id":239488191,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/239488191/149x198/7381d3ba45/1540136752?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/239488191/298x396/891d3f4926/1540136752?v=1","title":"The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution","short_title":"The Innovators","author":"Walter Isaacson","tracking":{"object_type":"document","object_id":239488191,"track":"flattened_recommender","doc_uuid":"w94HbwYzEFZwdhppeji1v1Kv5/8="},"url":"https://www.scribd.com/book/239488191/The-Innovators-How-a-Group-of-Hackers-Geniuses-and-Geeks-Created-the-Digital-Revolution","top_badge":null},"239588474":{"type":"book","id":239588474,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/239588474/149x198/8a4150948e/1540147564?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/239588474/298x396/644cc7285e/1540147564?v=1","title":"Rise of ISIS: A Threat We Can't Ignore","short_title":"Rise of ISIS","author":"Jay Sekulow","tracking":{"object_type":"document","object_id":239588474,"track":"flattened_recommender","doc_uuid":"6MLkBYPI9ZsCfP1I01q/7mbF8oo="},"url":"https://www.scribd.com/book/239588474/Rise-of-ISIS-A-Threat-We-Can-t-Ignore","top_badge":null},"244157917":{"type":"book","id":244157917,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/244157917/149x198/ce51d31665/1540137753?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/244157917/298x396/d0cbd421a3/1540137753?v=1","title":"Yes Please","short_title":"Yes Please","author":"Amy Poehler","tracking":{"object_type":"document","object_id":244157917,"track":"flattened_recommender","doc_uuid":"xhnm96n8QoJDgk7UvwfzqcQi8BY="},"url":"https://www.scribd.com/book/244157917/Yes-Please","top_badge":null},"246730409":{"type":"document","id":246730409,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/246730409/149x198/47db3b6408/1416111413?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/246730409/298x396/c13ae39b99/1416111413?v=1","title":"hasdasd","short_title":"hasdasd","author":"Giancarlo Ventura","tracking":{"object_type":"document","object_id":246730409,"track":"flattened_recommender","doc_uuid":"ae/p2IEY3umXfIh1lpEDawiF1H0="},"url":"https://www.scribd.com/document/246730409/hasdasd","top_badge":null},"246897514":{"type":"book","id":246897514,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/246897514/149x198/9d722fcc90/1540148611?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/246897514/298x396/2244bff6fc/1540148611?v=1","title":"The Wallcreeper","short_title":"The Wallcreeper","author":"Nell Zink","tracking":{"object_type":"document","object_id":246897514,"track":"flattened_recommender","doc_uuid":"KPEx7Z94z67RYzUF1cXz1BuEvD0="},"url":"https://www.scribd.com/book/246897514/The-Wallcreeper","top_badge":null},"249308236":{"type":"book","id":249308236,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249308236/149x198/345de5ca38/1540137556?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249308236/298x396/4e9d2e54be/1540137556?v=1","title":"Interpreter of Maladies","short_title":"Interpreter of Maladies","author":"Jhumpa Lahiri","tracking":{"object_type":"document","object_id":249308236,"track":"flattened_recommender","doc_uuid":"Jsc0KnZPgA7XfVBGc4rNZMBsfy4="},"url":"https://www.scribd.com/book/249308236/Interpreter-of-Maladies","top_badge":null},"249308781":{"type":"book","id":249308781,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249308781/149x198/44cce4d99a/1540145146?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/249308781/298x396/3fb7c9a745/1540145146?v=1","title":"Life of Pi","short_title":"Life of Pi","author":"Yann Martel","tracking":{"object_type":"document","object_id":249308781,"track":"flattened_recommender","doc_uuid":"WgTMn7Fzaph9q0rKwq2Fa1JLWqg="},"url":"https://www.scribd.com/book/249308781/Life-of-Pi","top_badge":null},"249309502":{"type":"book","id":249309502,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249309502/149x198/a536db5ae1/1540138441?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/249309502/298x396/aa0185412b/1540138441?v=1","title":"Extremely Loud and Incredibly Close: A Novel","short_title":"Extremely Loud and Incredibly Close","author":"Jonathan Safran Foer","tracking":{"object_type":"document","object_id":249309502,"track":"flattened_recommender","doc_uuid":"pw0/Hc2w8MOqokYCixU4EyFmgug="},"url":"https://www.scribd.com/book/249309502/Extremely-Loud-and-Incredibly-Close-A-Novel","top_badge":null},"250006950":{"type":"book","id":250006950,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/250006950/149x198/dfc24938b6/1540138217?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/250006950/298x396/a7ea4fedc0/1540138217?v=1","title":"The First Bad Man: A Novel","short_title":"The First Bad Man","author":"Miranda July","tracking":{"object_type":"document","object_id":250006950,"track":"flattened_recommender","doc_uuid":"NIUdJpF0mkB+iozB3mLP705rAE4="},"url":"https://www.scribd.com/book/250006950/The-First-Bad-Man-A-Novel","top_badge":null},"250854139":{"type":"document","id":250854139,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/250854139/149x198/41d09a88a3/1419345753?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/250854139/298x396/738dc8d85a/1419345753?v=1","title":"jurnal pemrograman komputer.pdf","short_title":"jurnal pemrograman komputer.pdf","author":"AnissaRiandaPutri","tracking":{"object_type":"document","object_id":250854139,"track":"flattened_recommender","doc_uuid":"CwoiRJb+x1OSQ14zKY6m8kFBjs0="},"url":"https://www.scribd.com/document/250854139/jurnal-pemrograman-komputer-pdf","top_badge":null},"253264900":{"type":"book","id":253264900,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/253264900/149x198/5948645a35/1540147093?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/253264900/298x396/912824fccd/1540147093?v=1","title":"Sapiens: A Brief History of Humankind","short_title":"Sapiens","author":"Yuval Noah Harari","tracking":{"object_type":"document","object_id":253264900,"track":"flattened_recommender","doc_uuid":"xcSfxCVV1lrbQZ97WRC3D3ZMn6w="},"url":"https://www.scribd.com/book/253264900/Sapiens-A-Brief-History-of-Humankind","top_badge":null},"254039238":{"type":"book","id":254039238,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/254039238/149x198/278d17c7f4/1540143141?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/254039238/298x396/8e93835fcc/1540143141?v=1","title":"Leaving Berlin: A Novel","short_title":"Leaving Berlin","author":"Joseph Kanon","tracking":{"object_type":"document","object_id":254039238,"track":"flattened_recommender","doc_uuid":"vnpEaGjBSxkemtIgFnzFJoc525A="},"url":"https://www.scribd.com/book/254039238/Leaving-Berlin-A-Novel","top_badge":null},"256051000":{"type":"document","id":256051000,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/256051000/149x198/028a36d2ad/1424197807?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/256051000/298x396/1f5dd2302c/1424197807?v=1","title":"MySQL Test","short_title":"MySQL Test","author":"iamhaidar","tracking":{"object_type":"document","object_id":256051000,"track":"flattened_recommender","doc_uuid":"yfS2JK+E/A/+4Hxd0zNVlTNCUg4="},"url":"https://www.scribd.com/document/256051000/MySQL-Test","top_badge":null},"260115407":{"type":"document","id":260115407,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/260115407/149x198/5d3d95ee9a/1427459830?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/260115407/298x396/ef27fe035a/1427459830?v=1","title":"Cara Mengisi Data Base","short_title":"Cara Mengisi Data Base","author":"Muhammad Yunus","tracking":{"object_type":"document","object_id":260115407,"track":"flattened_recommender","doc_uuid":"aIrdvp1Py4u/UOVMatfIXDIfriU="},"url":"https://www.scribd.com/document/260115407/Cara-Mengisi-Data-Base","top_badge":null},"263504218":{"type":"book","id":263504218,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/263504218/149x198/5791495c90/1540145099?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/263504218/298x396/ca05b40921/1540145099?v=1","title":"Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future","short_title":"Elon Musk","author":"Ashlee Vance","tracking":{"object_type":"document","object_id":263504218,"track":"flattened_recommender","doc_uuid":"tKFInV2mknGoKwkoBwvtAmUnw1w="},"url":"https://www.scribd.com/book/263504218/Elon-Musk-Tesla-SpaceX-and-the-Quest-for-a-Fantastic-Future","top_badge":null},"273440534":{"type":"book","id":273440534,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/273440534/149x198/d972c41ea4/1540144513?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/273440534/298x396/79bdc35da6/1540144513?v=1","title":"The Incarnations: A Novel","short_title":"The Incarnations","author":"Susan Barker","tracking":{"object_type":"document","object_id":273440534,"track":"flattened_recommender","doc_uuid":"KXRnMwjNOFIQvThZcHn1XSCoaQM="},"url":"https://www.scribd.com/book/273440534/The-Incarnations-A-Novel","top_badge":null},"273582508":{"type":"book","id":273582508,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/273582508/149x198/1af6c958cc/1540141525?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/273582508/298x396/6f8ad65faa/1540141525?v=1","title":"You Too Can Have a Body Like Mine: A Novel","short_title":"You Too Can Have a Body Like Mine","author":"Alexandra Kleeman","tracking":{"object_type":"document","object_id":273582508,"track":"flattened_recommender","doc_uuid":"OIbbEKuCvkq9J6sBMBKR0jy7AMU="},"url":"https://www.scribd.com/book/273582508/You-Too-Can-Have-a-Body-Like-Mine-A-Novel","top_badge":null},"274363284":{"type":"document","id":274363284,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/274363284/149x198/b5e029709b/1439446314?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/274363284/298x396/98ba035712/1439446314?v=1","title":"SynapseIndia Sharing Feedback on PHP Scripting Language","short_title":"SynapseIndia Sharing Feedback on PHP Scripting Language","author":"synapseindia","tracking":{"object_type":"document","object_id":274363284,"track":"flattened_recommender","doc_uuid":"nGNK91kTKMxO2Xaz997ZMNDJCSA="},"url":"https://www.scribd.com/presentation/274363284/SynapseIndia-Sharing-Feedback-on-PHP-Scripting-Language","top_badge":null},"282766939":{"type":"book","id":282766939,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/282766939/149x198/0fd38dc477/1540144416?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/282766939/298x396/ce234488d0/1540144416?v=1","title":"Dispatches from Pluto: Lost and Found in the Mississippi Delta","short_title":"Dispatches from Pluto","author":"Richard Grant","tracking":{"object_type":"document","object_id":282766939,"track":"flattened_recommender","doc_uuid":"p+YWQDCFJ1mn1rhcmu0ZCMbd5Qc="},"url":"https://www.scribd.com/book/282766939/Dispatches-from-Pluto-Lost-and-Found-in-the-Mississippi-Delta","top_badge":null},"293461549":{"type":"book","id":293461549,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/293461549/149x198/133f5a7fcd/1540140988?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/293461549/298x396/077cb2a3ef/1540140988?v=1","title":"The New Confessions of an Economic Hit Man","short_title":"The New Confessions of an Economic Hit Man","author":"John Perkins","tracking":{"object_type":"document","object_id":293461549,"track":"flattened_recommender","doc_uuid":"2x7VugKWCJIl3dWkAzfCpzUr64s="},"url":"https://www.scribd.com/book/293461549/The-New-Confessions-of-an-Economic-Hit-Man","top_badge":null},"295343611":{"type":"document","id":295343611,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/295343611/149x198/a38ff64f44/1493592765?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/295343611/298x396/ed02d7aa14/1493592765?v=1","title":"Oracle Data Integrator 11g - Integration and Administration Activity Guide Volumen II","short_title":"Oracle Data Integrator 11g - Integration and Administration Activity Guide Volumen II","author":"danielhidalgop","tracking":{"object_type":"document","object_id":295343611,"track":"flattened_recommender","doc_uuid":"XFfJh7zKeSsDaAR475MrrixCNdM="},"url":"https://www.scribd.com/doc/295343611/Oracle-Data-Integrator-11g-Integration-and-Administration-Activity-Guide-Volumen-II","top_badge":null},"308034016":{"type":"document","id":308034016,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/308034016/149x198/4a1d86e812/1460424680?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/308034016/298x396/1b23151cc8/1460424680?v=1","title":"Codeigniter Manual","short_title":"Codeigniter Manual","author":"carrizof","tracking":{"object_type":"document","object_id":308034016,"track":"flattened_recommender","doc_uuid":"JODlN1ssbTGGyPzl+J9dje3m1HQ="},"url":"https://www.scribd.com/document/308034016/Codeigniter-Manual","top_badge":null},"314934095":{"type":"document","id":314934095,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/314934095/149x198/77afde91c0/1465206141?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/314934095/298x396/2a12b6d782/1465206141?v=1","title":"CIS 336 PAPERS Learn by Doing/cis336papers.com","short_title":"CIS 336 PAPERS Learn by Doing/cis336papers.com","author":"munna28","tracking":{"object_type":"document","object_id":314934095,"track":"flattened_recommender","doc_uuid":"6PxLQqETngupq4MmNEEAnlB6rtU="},"url":"https://www.scribd.com/presentation/314934095/CIS-336-PAPERS-Learn-by-Doing-cis336papers-com","top_badge":null},"322522909":{"type":"document","id":322522909,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/322522909/149x198/0ed3717ea4/1472529412?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/322522909/298x396/40b8268969/1472529412?v=1","title":"Mobile Device and Web Based Remote Controller on Data Repository","short_title":"Mobile Device and Web Based Remote Controller on Data Repository","author":"SEP-Publisher","tracking":{"object_type":"document","object_id":322522909,"track":"flattened_recommender","doc_uuid":"75tQlqQdbZTgaVBTYTtjdv8fWXA="},"url":"https://www.scribd.com/document/322522909/Mobile-Device-and-Web-Based-Remote-Controller-on-Data-Repository","top_badge":null},"332024589":{"type":"document","id":332024589,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/332024589/149x198/fb23f39d5d/1479879996?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/332024589/298x396/3a30f77c9b/1479879996?v=1","title":"(Group 5) Programming Language (1)","short_title":"(Group 5) Programming Language (1)","author":"Mikhail Hasanuddin","tracking":{"object_type":"document","object_id":332024589,"track":"flattened_recommender","doc_uuid":"OUWZQ81ldgRgX2yjRtWzfY5Bh24="},"url":"https://www.scribd.com/presentation/332024589/Group-5-Programming-Language-1","top_badge":null},"335361406":{"type":"document","id":335361406,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/335361406/149x198/5c98e082a8/1483117902?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/335361406/298x396/6ef0ca9ad4/1483117902?v=1","title":"v1i3a5","short_title":"v1i3a5","author":"abhi10aug","tracking":{"object_type":"document","object_id":335361406,"track":"flattened_recommender","doc_uuid":"UzPXJgnJAOraZw6NuZzmyZLJs4U="},"url":"https://www.scribd.com/document/335361406/v1i3a5","top_badge":null},"337536061":{"type":"book","id":337536061,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/337536061/149x198/e0fabe3d5f/1540148827?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/337536061/298x396/9e5f6dd316/1540148827?v=1","title":"The Sympathizer: A Novel (Pulitzer Prize for Fiction)","short_title":"The Sympathizer","author":"Viet Thanh Nguyen","tracking":{"object_type":"document","object_id":337536061,"track":"flattened_recommender","doc_uuid":"Gfx2VuFmXwMKtP/Xa4wZ5DUrQEo="},"url":"https://www.scribd.com/book/337536061/The-Sympathizer-A-Novel-Pulitzer-Prize-for-Fiction","top_badge":null},"356755331":{"type":"document","id":356755331,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/356755331/149x198/a61abf1cae/1503392918?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/356755331/298x396/bf7d1d3aa9/1503392918?v=1","title":"Unit 7-PHP","short_title":"Unit 7-PHP","author":"Prince Shuv","tracking":{"object_type":"document","object_id":356755331,"track":"flattened_recommender","doc_uuid":"EXCU3bv3qCAH9oe/n9PUSiJzYe8="},"url":"https://www.scribd.com/document/356755331/Unit-7-PHP","top_badge":null},"356909277":{"type":"document","id":356909277,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/356909277/149x198/4fdcd267ee/1503565441?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/356909277/298x396/535ed4a0e0/1503565441?v=1","title":"Architecture and Analytical Study of Magento","short_title":"Architecture and Analytical Study of Magento","author":"IRJET Journal","tracking":{"object_type":"document","object_id":356909277,"track":"flattened_recommender","doc_uuid":"YxOwzqBkqvjmGOUrh/bilH/Ie6k="},"url":"https://www.scribd.com/document/356909277/Architecture-and-Analytical-Study-of-Magento","top_badge":null}}},"seo_roadblock_props_path":"/doc-page/seo-roadblock-props/106404736","signup_context":null,"toolbar":{"search_path":"/search-4gen?allowed_pages=1%2C2&auth_token=hV1Mrk%2BqN%2FsV3h32mj4Za2KchLs%3D&authenticity_token=gWE98H7ZM49TZzp2G1rcqJO8TAvCE8CoNy3gUkpqGawaWd47C5cNvU65jiSFhAZxZfzROaeX9VsFNU7RF%2BsL7A%3D%3D&expires=1540768290&wordDocumentId=106404736&wordUploadId=109881903"},"renewal_nag_props":null}-->
' ).global. We’ll add our database configuration information to global.php files). 'dsn' => 'mysql:dbname=zf2tutorial. Zend Framework 2’s ModuleManager merges all the configuration from each module’s module. Now that the ServiceManager can create an AlbumTable instance for us.config. You should put your database credentials in config/autoloader/local. ). ).php which you should commit to your version control system.php file and then merges in the files in config/autoload (*.You can use local. } } This method returns an array of factories that are all merged together by the ModuleManager before passing to the ServiceManager. 'password' => 'YOUR PASSWORD HERE'. Add getAlbumTable() to the AlbumController class: module/Album/src/Album/Controller/AlbumController.hostname=localhost'. ). 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory'.local.php: return array( 'db' => array( 'driver' => 'Pdo'.). ). We also need to configure the Service Manager so that it knows how to get a Zend\Db\Adapter\Adapter. we can add a method to the controller to retrieve it. This is done using a factory called Zend\Db\Adapter \AdapterServiceFactory which we can configure within the merged config system.php: public function getAlbumTable() { if (!$this->albumTable) { .php and then *.php (outside of the VCS) to store the credentials for your database if you want to.php is ignored): config. config/autoload/global. ).

Let’s start with a list of albums when the index action is called.?></td> . $this->headTitle($title). ?> <h1><?php echo $this->escapeHtml($title). We can now call getAlbumTable() from within our controller whenever we need to interact with our model. We can now fill in the index. With Zend Framework 2. to the top of the class. } /.?>">Add new album</a></p> <table class="table"> <tr> <th>Title</th> <th>Artist</th> <th>&nbsp. )). Listing albums In order to list the albums. we need to retrieve them from the model and pass them to the view. These are then automatically passed to the view script.. public function indexAction() { return new ViewModel(array( 'albums' => $this->getAlbumTable()->fetchAll(). we return a ViewModel instance where the first parameter of the constructor is an array from the action containing data we need. The ViewModel object also allows us to change the view script that is used. } You should also add: protected $albumTable..phtml: <?php $title = 'My albums'.phtml view script: module/Album/view/album/album/index.?></td> <td><?php echo $this->escapeHtml($album->artist).</th> </tr> <?php foreach($albums as $album) : ?> <tr> <td><?php echo $this->escapeHtml($album->title).. in order to set variables in the view. we fill in indexAction() within AlbumController. $this->albumTable = $sm->get('Album\Model\AlbumTable').php: /. Update the AlbumController’s indexAction() like this: module/Album/src/Album/Controller/AlbumController.$sm = $this->getServiceLocator(). but the default is to use {controller name}/{action name}.. To do this. } return $this->albumTable. ?></h1> <p><a href="<?php echo $this->url('album'. array( 'action'=>'add')).

A standard foreach: loop is used to iterate over the list of albums. We then create a table to display each album’s title. Click on “Skeleton Application” in the list of Original strings and then type in “Tutorial” as the translation. the url() view helper is used to create the edit and delete links.net/ download. In this case we use our ‘album’ route which is set up to accept two placeholder variables: action and id.po. The url() view helper is provided by Zend Framework 2 and is used to create the links we need. Note that we always use the escapeHtml() view helper to help protect ourselves from XSS vulnerabilities. 'id' => $album->id)). but we need to change the title and and remove the copyright message. Again. The first parameter to url() is the route name we wish to use for construction of the URL and then the second parameter is an array of all the variables to fit into the placeholders to use. and we use the alternate form using a colon and endforeach. .?>">Delete</a> </td> </tr> <?php endforeach. The ZendSkeletonApplication is set up to use Zend\I18n’s translation functionality for all the text. artist and provide links to allow for editing and deleting the record. 'id' => $album->id)). ?> </table> The first thing we do is to set the title for the page (used in the layout) and also set the title for the <head> section using the headTitle() view helper which will display in the browser’s title bar. as it is easier to scan than to try and match up braces. array('action'=>'delete'.php/) to change the text. It uses .<td> <a href="<?php echo $this->url('album'.?>">Edit</a> <a href="<?php echo $this->url('album'.poedit. The Zend Framework 2 view system automatically ensures that these variables are extracted into the scope of the view script. Start poedit and open application/language/en_US. We then create a link to add a new album.localhost/album you should see this: Styling We’ve picked up the SkeletonApplication’s which is fine. array('action'=>'edit'. If you open http://zf2-tutorial.po files that live in application/langauge and you need to use poedit (http://www. so that we don’t have to worry about prefixing them with $this-> as we used to have to do with Zend Framework 1. We iterate over the $albums that we assigned from the controller action. however you can do so if you wish.

mo file for us. To remove the copyright message. we need to edit the Application module’s layout.2012 by Zend Technologies Ltd.phtml view script: module/Application/view/layout/layout.Press Save in the toolbar and poedit will create an en_US. There are two bits to this part: • Display a form for user to provide details • Process the form submission and store to database .') ?></p> The page now looks ever so slightly better now! Adding new albums We can now code up the functionality to add new albums. <?php echo $this->translate('All rights reserved. 2005 .phtml: Remove this line: <p>&copy.

). Create this file file now: module/Album/src/Album/Form/AlbumForm. The Zend\Form component manages the form and for validation.php: <?php namespace Album\Form. 'post'). use Zend\Form\Form. 'options' => array( 'label' => 'Title'. we add a Zend\InputFilter to our Album entity. 'attributes' => array( 'type' => 'text'. We start by creating a new class Album\Form\AlbumForm that extends from Zend\Form\Form to define our form. 'attributes' => array( 'type' => 'hidden'. ). $this->add(array( 'name' => 'submit'. ). 'value' => 'Go'. ).php file within the module/Album/src/Album/Form directory. )). )). class AlbumForm extends Form { public function __construct($name = null) { // we want to ignore the name passed parent::__construct('album'). . $this->add(array( 'name' => 'id'. 'attributes' => array( 'type' => 'text'. 'options' => array( 'label' => 'Artist'. $this->add(array( 'name' => 'title'. $this->add(array( 'name' => 'artist'. )). ). $this->setAttribute('method'. The class is stored in the AlbumForm. 'attributes' => array( 'type' => 'submit'. 'id' => 'submitbutton'.We use Zend\Form to do this. ).

$this->artist = (isset($data['artist'])) ? $data['artist'] : null. Zend\InputFilter\InputFilterInterface. } } Within the constructor of AlbumForm. use use use use Zend\InputFilter\InputFilter. protected $inputFilter. We also need to set up validation for this form. } public function getInputFilter() { if (!$this->inputFilter) { $inputFilter = new InputFilter(). and submit button.php: <?php namespace Album\Model. such as a model entity. Zend\InputFilter\Factory as InputFactory. } public function setInputFilter(InputFilterInterface $inputFilter) { throw new \Exception("Not used"). 'filters' => array( array('name' => 'Int'). public $title. class Album implements InputFilterAwareInterface { public $id. $factory = new InputFactory(). public function exchangeArray($data) { $this->id = (isset($data['id'])) ? $data['id'] : null. 'required' => true. title. we set the name when we call the parent’s constructor and then set the method and then create four form elements for the id. $inputFilter->add($factory->createInput(array( 'name' => 'id'. In Zend Framework 2 is this done using an input filter which can either be standalone or within any class that implements InputFilterAwareInterface.)). artist. $this->title = (isset($data['title'])) ? $data['title'] : null. For each item we set various attributes and options. We are going to add the input filter to our Album entity: module/Album/src/Album/Model/Album. ). Zend\InputFilter\InputFilterAwareInterface. . including the label to be displayed. public $artist.

For the id field we add an Int filter to as we only need integers. ). $inputFilter->add($factory->createInput(array( 'name' => 'artist'. We also set them to be required and add a StringLength validator to ensure that the user doesn’t enter more characters than we can store into the database. We add one input for each property that we wish to filter or validate. array('name' => 'StringTrim'). } return $this->inputFilter. } } The InputFilterAwareInterface defines two methods: setInputFilter() and getInputFilter(). ). $this->inputFilter = $inputFilter. Within getInputFilter(). $inputFilter->add($factory->createInput(array( 'name' => 'title'. 'required' => true.))). 'filters' => array( array('name' => 'StripTags'). 'validators' => array( array( 'name' => 'StringLength'. 'validators' => array( array( 'name' => 'StringLength'. 'max' => 100. array('name' => 'StringTrim'). ). 'filters' => array( array('name' => 'StripTags'). ). ). ))). 'options' => array( 'encoding' => 'UTF-8'. ). ). For the text elements. We only need to implement getInputFilter() so we simply throw an exception in setInputFilter(). 'required' => true. 'options' => array( 'encoding' => 'UTF-8'. ))). we instantiate an InputFilter and then add the inputs that we require. . 'min' => 1. ). StripTags and StringTrim to remove unwanted HTML and unnecessary white space. 'max' => 100. we add two filters. 'min' => 1.

$form->setInputFilter($album->getInputFilter()). $form->submit->setAttribute('value'. $request = $this->getRequest(). use Album\Model\Album. $form->setInputFilter($album->getInputFilter()). if ($request->isPost()) { $album = new Album(). 'Add'). then the form has been submitted and so we set the form’s input filter from an album instance.. $form->setData($request->getPost()). We instantiate AlbumForm and set the label on the submit button to “Add”..We now need to get the form to display and then process it on submission. } } return array('form' => $form). This is done within the AlbumController’s addAction(): module/Album/src/Album/Controller/AlbumController.. if ($form->isValid()) { If the Request object’s isPost() method is true. $form->get('submit')->setAttribute('value'. . // Redirect to list of albums return $this->redirect()->toRoute('album'). if ($request->isPost()) { $album = new Album(). use Album\Form\AlbumForm. $this->getAlbumTable()->saveAlbum($album). 'Add'). $request = $this->getRequest(). use Zend\Mvc\Controller\ActionController.. if ($form->isValid()) { $album->exchangeArray($form->getData()). } //.. public function addAction() { $form = new AlbumForm(). Let’s look at the addAction() code in a little more detail: $form = new AlbumForm(). we implement addAction().. After adding the AlbumForm to the use list. //.php: //. use Zend\View\Model\ViewModel. We do this here as we’ll want to re-use the form when editing an album and will use a different label. We then set the posted data to the form and check to see if it is valid using the isValid() member function of the form. $form->setData($request->getPost()).

?> <h1><?php echo $this->escapeHtml($title). we return the variables that we want assigned to the view. $this->formInput($form->get('submit')). $form->setAttribute('action'. // Redirect to list of albums return $this->redirect()->toRoute('album'). Then for each element with a label. $this->formRow($form->get('artist')). we redirect back to the list of albums using the Redirect controller plugin.phtml view script: module/Album/view/album/album/add. Finally. we display a title as before and then we render the form. then we grab the data from the form and store to the model using saveAlbum(). $this->form()->closeTag($form). The form() view helper has an openTag() and closeTag() method which we use to open and close the form. we use formHidden() and formInput() You can use formInput(). $this->getAlbumTable()->saveAlbum($album). This saves a little typing. $this->headTitle($title). formLabel() and formElementErrors() for all fields and create specific ‘decoration’ HTML if you wanted to though. return array('form' => $form). array('action' => 'add'))). $this->url('album'. We now need to render the form in the add. If the form is valid. just the form object. $form->prepare(). Again. but for the two elements that are standalone. Note that Zend Framework 2 also allows you to simply return an array containing the variables to be assigned to the view and it will create a ViewModel behind the scenes for you. . After we have saved the new album row.$album->exchangeArray($form->getData()). Zend Framework provides some view helpers to make this a little easier. echo echo echo echo echo echo $this->form()->openTag($form). we can use formRow().phtml: <?php $title = 'Add new album'. $this->formRow($form->get('title')). ?></h1> <?php $form = $this->form. In this case. $this->formHidden($form->get('id')).

if ($request->isPost()) { $form->setData($request->getPost()). 'form' => $form. Editing an album Editing an album is almost identical to adding one. array('action'=>'add')). if ($form->isValid()) { $this->getAlbumTable()->saveAlbum($album). $request = $this->getRequest().. ). so the code is very similar. if (!$id) { return $this->redirect()->toRoute('album'. } . $form->get('submit')->setAttribute('value'. This time we use editAction() in the AlbumController: module/Album/src/Album/AlbumController. } } return array( 'id' => $id. } $album = $this->getAlbumTable()->getAlbum($id).php: //. 'Edit'). $form = new AlbumForm(). $form->bind($album).You should now be able to use the “Add new album” link on the home page of the application to add a new album record.. public function editAction() { $id = (int)$this->params('id'). // Redirect to list of albums return $this->redirect()->toRoute('album').

$this->artist = (isset($data['artist'])) ? $data['artist'] : null. so we can just call the mappers’ saveAlbum() to store the changes back to the database.. $form->get('submit')->setAttribute('value'.php: . These operations are done using a hydrator object. if (!$id) { return $this->redirect()->toRoute('album'. Firstly. we do not need to populate the form’s data back into the $album as that’s already been done. We have already written exchangeArray() in our Album entity.. . After successful validation in isValid().. but the default one is Zend\Stdlib\Hydrator\ArraySerializable which expects to find two methods in the model: getArrayCopy() and exchangeArray(). If the id is zero. } $album = $this->getAlbumTable()->getAlbum($id). The form’s bind() method attaches the model to the form. Let’s look at the differences from adding an album. so just need to write getArrayCopy(): module/Album/src/Album/Model/Album. public function exchangeArray($data) { $this->id = (isset($data['id'])) ? $data['id'] : null. As a result of using bind() with its hydrator. array('action'=>'add')).. } public function getArrayCopy() { return get_object_vars($this). 'Edit')..php.config. $this->title = (isset($data['title'])) ? $data['title'] : null. This is used in two ways: 1.. } . we continue by getting the album entity from the database. $form->bind($album). params is a controller plugin that provides a convenient way to retrieve parameters from the matched route. When displaying the form. we look for the id that is in the matched route and use it to load the album to be edited: $id = (int)$this->params('id'). the data from the form is put back into the model. This code should look comfortably familiar. the initial values for each element are extracted from the model. There are a number of hydrators. We use it to retrieve the id from the route we created in the modules’ module. other wise. $form = new AlbumForm(). then we redirect to the add action. 2.//.

$form->prepare(). ?></h1> <?php $form = $this->form. after all..phtml: <?php $title = 'Edit album'. This would be wrong. ?> <h1><?php echo $this->escapeHtml($title). we’ll code it directly into our view (Zend\Form is. $form->setAttribute('action'. array('action' => 'edit'. if ($request->isPost()) { $del = $request->getPost()->get('del'. we recall that you shouldn’t do an irreversible action using GET and should use POST instead. $this->formRow($form->get('artist')). $this->url('album'. As the form is trivial.phtml. } $request = $this->getRequest(). $this->getAlbumTable()->deleteAlbum($id). echo echo echo echo echo echo $this->form()->openTag($form). We shall show a confirmation form when the user clicks delete and if they then click “yes”. optional!).php: //. $this->form()->closeTag($form). $this->formRow($form->get('title')). Deleting an album To round out our application. we need to add deletion. if (!$id) { return $this->redirect()->toRoute('album'). $this->headTitle($title). We have a Delete link next to each album on our list page and the naïve approach would be to do a delete when it’s clicked. public function deleteAction() { $id = (int)$this->params('id'). Remembering our HTTP spec. } . 'id'=>$this->id))). The only changes are to use the ‘Edit Album’ title and set the form’s action to the ‘edit’ action too. we will do the deletion. $this->formHidden($form->get('id')). looks very similar to the one for adding an album: module/Album/view/album/album/edit. $this->formInput($form->get('submit')). 'No').The view template. You should now be able to edit albums. edit. Let’s start with the action code in AlbumController::deleteAction(): module/Album/src/Album/AlbumController.. if ($del == 'Yes') { $id = (int)$request->getPost()->get('id').

} return array( 'id' => $id. ?></h1> <p>Are you sure that you want to delete '<?php echo $this->escapeHtml($album->title). $this->headTitle($title).config. Ensuring that the home page displays the list of albums One final point. ?>'? </p> <?php $url = $this->url('album'. 'defaults' => array( 'controller' => 'Application\Controller\Index'. http://zf2-tutorial. The view script is a simple form: module/Album/view/album/album/delete..php. ?>" /> <input type="submit" name="del" value="Yes" /> <input type="submit" name="del" value="No" /> </div> </form> In this script. At the moment. If the request is not a POST. In the action. This is due to a route set up in the Application module’s module. we display a confirmation message to the user and then a form with yes and no buttons. } //. along with the id. ?>" method="post"> <div> <input type="hidden" name="id" value="<?php echo (int)$album->id.phtml: <?php $title = 'Delete album'. array('action' => 'delete'. ?>' by '<?php echo $this->escapeHtml($album->artist). 'album' => $this->getAlbumTable()->getAlbum($id) ).and check the request object’s isPost() to determine whether to show the confirmation page or to delete the album.. the home page.localhost/ doesn’t display the list of albums. 'id'=>$this->id)).// Redirect to list of albums return $this->redirect()->toRoute('album'). 'options' => array( 'route' => '/'.config. We use the table object to delete the row using the deleteAlbum() method and then redirect back the list of albums. As before. ?> <form action="<?php echo $url. .php and find the home route: 'home' => array( 'type' => 'Zend\Mvc\Router\Http\Literal'. open module/Application/config/module. we checked specifically for the “Yes” value when doing the deletion. To change it. ?> <h1><?php echo $this->escapeHtml($title). then we retrieve the correct database record and assign to the view. we get the id from the matched route.

I hope that you found it useful.'action' ). ).com/docs/latest/manual/en/index. ). If you find anything that’s wrong. ).you now have a fully working application! Conclusion This concludes our brief look at building a simple.html. My website at http://akrabat. please email me at rob@akrabat. ). 'options' => array( 'route' => '/'. ). change the controller from Application\Controller\Index to Album\Controller\Album: 'home' => array( 'type' => 'Zend\Mvc\Router\Http\Literal'. but fully functional. there aren’t that many articles about it yet. That’s it . 'defaults' => array( 'controller' => 'Album\Controller\Album'.com! As Zend Framework 2 is still in beta. . You should however check out the manual at http://packages. MVC application using Zend Framework 2. => 'index'.com contains many articles on Zend Framework and I have started covering Zend Framework 2 there too.zendframework. 'action' => 'index'.

","static_promo_banner_cta_url":"https://www.scribd.com/"},"eligible_for_exclusive_trial_roadblock":false,"eligible_for_seo_roadblock":false,"exclusive_free_trial_roadblock_props_path":"/doc-page/exclusive-free-trial-props/106404736","flashes":[],"footer_props":{"urls":{"about":"/about","press":"/press","blog":"http://literally.scribd.com/","careers":"/careers","contact":"/contact","plans_landing":"/subscribe","referrals":"/referrals?source=footer","giftcards":"/giftcards","faq":"/faq","accessibility":"/accessibility-policy","faq_paths":{"accounts":"https://support.scribd.com/hc/sections/202246346","announcements":"https://support.scribd.com/hc/sections/202246066","copyright":"https://support.scribd.com/hc/sections/202246086","downloading":"https://support.scribd.com/hc/articles/210135046","publishing":"https://support.scribd.com/hc/sections/202246366","reading":"https://support.scribd.com/hc/sections/202246406","selling":"https://support.scribd.com/hc/sections/202246326","store":"https://support.scribd.com/hc/sections/202246306","status":"https://support.scribd.com/hc/en-us/articles/360001202872","terms":"https://support.scribd.com/hc/sections/202246126","writing":"https://support.scribd.com/hc/sections/202246366","adchoices":"https://support.scribd.com/hc/articles/210129366","paid_features":"https://support.scribd.com/hc/sections/202246306","failed_uploads":"https://support.scribd.com/hc/en-us/articles/210134586-Troubleshooting-uploads-and-conversions","copyright_infringement":"https://support.scribd.com/hc/en-us/articles/210128946-DMCA-copyright-infringement-takedown-notification-policy","end_user_license":"https://support.scribd.com/hc/en-us/articles/210129486","terms_of_use":"https://support.scribd.com/hc/en-us/articles/210129326-General-Terms-of-Use"},"publishers":"/publishers","static_terms":"/terms","static_privacy":"/privacy","copyright":"/copyright","ios_app":"https://itunes.apple.com/us/app/scribd-worlds-largest-online/id542557212?mt=8&uo=4&at=11lGEE","android_app":"https://play.google.com/store/apps/details?id=com.scribd.app.reader0&hl=en","books":"/books","sitemap":"/directory"}},"global_nav_props":{"header_props":{"logo_src":"/images/landing/home2_landing/scribd_logo_horiz_small.svg","root_url":"https://www.scribd.com/","search_term":"","small_logo_src":"/images/logos/scribd_s_logo.png","uploads_url":"/upload-document","search_props":{"redirect_to_app":true,"search_url":"/search","query":"","search_page":false}},"user_menu_props":null,"sidebar_props":{"urls":{"bestsellers":"https://www.scribd.com/bestsellers","home":"https://www.scribd.com/","saved":"/saved","subscribe":"/archive/pmp_checkout?doc=106404736&metadata=%7B%22context%22%3A%22pmp%22%2C%22action%22%3A%22start_trial%22%2C%22logged_in%22%3Afalse%2C%22platform%22%3A%22web%22%7D","top_charts":"/bestsellers","upload":"https://www.scribd.com/upload-document"},"categories":{"book":{"icon":"icon-ic_book","icon_filled":"icon-ic_book_fill","url":"https://www.scribd.com/books","name":"Books","type":"book"},"news":{"icon":"icon-ic_articles","icon_filled":"icon-ic_articles_fill","url":"https://www.scribd.com/news","name":"News","type":"news"},"audiobook":{"icon":"icon-ic_audiobook","icon_filled":"icon-ic_audiobook_fill","url":"https://www.scribd.com/audiobooks","name":"Audiobooks","type":"audiobook"},"magazine":{"icon":"icon-ic_magazine","icon_filled":"icon-ic_magazine_fill","url":"https://www.scribd.com/magazines","name":"Magazines","type":"magazine"},"document":{"icon":"icon-ic_document","icon_filled":"icon-ic_document_fill","url":"https://www.scribd.com/docs","name":"Documents","type":"document"},"sheet_music":{"icon":"icon-ic_songbook","icon_filled":"icon-ic_songbook_fill","url":"https://www.scribd.com/sheetmusic","name":"Sheet Music","type":"sheet_music"},"summary":{"icon":"icon-ic_globalnav_snapshot","icon_filled":"icon-ic_globalnav_snapshot_fill","url":"https://www.scribd.com/snapshots","name":"Snapshots","type":"summary"}},"nav_categories":["mixed","book","audiobook","magazine","document","sheet_music"],"selected_content_type":"mixed","username":"","search_overlay_props":{"search_input_props":{"focused":false,"keep_suggestions_on_blur":false}}}},"recommenders":{"related_titles_recommender":{"ids":[35219883,116216825,356909277,191211292,91612143,332024589,6701876,295343611,209355407,335361406,260115407,80578150,37876497,121842523,148596147,79325283,65299679,36388755,246730409,256051000,187959251,356755331,214318198,322522909,274363284,219586426,314934095,250854139,36101288,308034016,244157917,212863738,253264900,239488191,263504218,282766939,163646054,224419023,224258670,224369806,238704340,224355300,225916486,293461549,224410295,211302755,202691564,239588474,182553141,234028503,224326250,224426877,224349281,337536061,249309502,254039238,182565115,224306619,273440534,273582508,182546874,249308781,224285255,224252178,250006950,235583696,231689346,224248577,224270540,163580087,235411767,224248520,163564256,249308236,246897514,182560283,163579056,163647832,163603389,216442529,182522032,224266633,224420008],"title_link":null,"title":null,"track_opts":{"compilation_id":"HiBsu8F8jWXs1Ct+4oIaGeIGWZE=","module_id":"UN7ie6SsK5TooYZT7Z79QGdjgXA=","widget_name":"right sidebar","track_id":"flattened_recommender"}},"footer_recommenders":{"recommenders":[{"ids":[35219883,116216825,356909277,191211292,91612143,332024589,6701876,295343611,209355407,335361406,260115407,80578150,37876497,121842523,148596147,79325283,65299679,36388755,246730409,256051000,187959251,356755331,214318198,322522909,274363284,219586426,314934095,250854139,36101288,308034016],"title_link":null,"title":"Documents Similar To Getting Started With Zend Framework 2","track_opts":{"compilation_id":"HiBsu8F8jWXs1Ct+4oIaGeIGWZE=","module_id":"/vDX9TYbXjZvqCvgCvgCwLz8n/0=","widget_name":"document_carousel"}}]},"seo_new_docs_recommenders":{"recommenders":[]},"documents":{"6701876":{"type":"document","id":6701876,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/6701876/149x198/a1776b80f5/1395169337?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/6701876/298x396/f001a7dcc2/1395169337?v=1","title":"What is PHP","short_title":"What is PHP","author":"api-3730987","tracking":{"object_type":"document","object_id":6701876,"track":"flattened_recommender","doc_uuid":"v8hxHuLRBr3qW9PTghKUJBjT6P4="},"url":"https://www.scribd.com/document/6701876/What-is-PHP","top_badge":null},"35219883":{"type":"document","id":35219883,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/35219883/149x198/5b26a1a4ba/1354120009?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/35219883/298x396/b79435d57a/1354120009?v=1","title":"yii-guide-1.1.1","short_title":"yii-guide-1.1.1","author":"momanyicharles196702","tracking":{"object_type":"document","object_id":35219883,"track":"flattened_recommender","doc_uuid":"/Q/Tk61TAMRznUifa2VCTXh/6U4="},"url":"https://www.scribd.com/document/35219883/yii-guide-1-1-1","top_badge":null},"36101288":{"type":"document","id":36101288,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/36101288/149x198/e6d6bd5b8d/1337892662?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/36101288/298x396/7ab69f78aa/1337892662?v=1","title":"p1","short_title":"p1","author":"Gousmohaddin Haveli","tracking":{"object_type":"document","object_id":36101288,"track":"flattened_recommender","doc_uuid":"MPQvsJQYRto507eiCpHWDltS/3Q="},"url":"https://www.scribd.com/document/36101288/p1","top_badge":null},"36388755":{"type":"document","id":36388755,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/36388755/149x198/1206b50fbb/1417973957?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/36388755/298x396/18f4983760/1417973957?v=1","title":"Tequilla Tutorial","short_title":"Tequilla Tutorial","author":"handsomeman","tracking":{"object_type":"document","object_id":36388755,"track":"flattened_recommender","doc_uuid":"j/u6FkRg0odKXAM0ZY5ilValzd4="},"url":"https://www.scribd.com/document/36388755/Tequilla-Tutorial","top_badge":null},"37876497":{"type":"document","id":37876497,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/37876497/149x198/6c58133c38/1363165915?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/37876497/298x396/b9b49a300d/1363165915?v=1","title":"API PHP Class - MikroTik Wiki","short_title":"API PHP Class - MikroTik Wiki","author":"Wahyudi Bukhari","tracking":{"object_type":"document","object_id":37876497,"track":"flattened_recommender","doc_uuid":"VxZtcY5aes+32TDvUwjmVGpKHQY="},"url":"https://www.scribd.com/document/37876497/API-PHP-Class-MikroTik-Wiki","top_badge":null},"65299679":{"type":"document","id":65299679,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/65299679/149x198/d617145bdb/1351181985?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/65299679/298x396/547c507905/1351181985?v=1","title":"Creating a PHP Framework","short_title":"Creating a PHP Framework","author":"tito2k","tracking":{"object_type":"document","object_id":65299679,"track":"flattened_recommender","doc_uuid":"ruRbpAEf4DUqRhqNB2emEk8A4pY="},"url":"https://www.scribd.com/document/65299679/Creating-a-PHP-Framework","top_badge":null},"79325283":{"type":"document","id":79325283,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/79325283/149x198/f95ca09c67/1399953671?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/79325283/298x396/a5036aec14/1399953671?v=1","title":"CENG547 – Advanced Database Systems","short_title":"CENG547 – Advanced Database Systems","author":"ligthyman","tracking":{"object_type":"document","object_id":79325283,"track":"flattened_recommender","doc_uuid":"pIjy24yCULNsQ4eAOs3W+hBoOzM="},"url":"https://www.scribd.com/presentation/79325283/CENG547-Advanced-Database-Systems","top_badge":null},"80578150":{"type":"document","id":80578150,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/80578150/149x198/5f66620c3b/1423218781?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/80578150/298x396/91cfa743b1/1423218781?v=1","title":"Getting Started With Zend Framework 2","short_title":"Getting Started With Zend Framework 2","author":"sergabrod","tracking":{"object_type":"document","object_id":80578150,"track":"flattened_recommender","doc_uuid":"99de8nRYBoFqN5196Edo5LKio7k="},"url":"https://www.scribd.com/document/80578150/Getting-Started-With-Zend-Framework-2","top_badge":null},"91612143":{"type":"document","id":91612143,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/91612143/149x198/490ada0ae4/1393906087?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/91612143/298x396/7df1b09ca3/1393906087?v=1","title":"1","short_title":"1","author":"wishpond","tracking":{"object_type":"document","object_id":91612143,"track":"flattened_recommender","doc_uuid":"4tIi+7o49TQR4mbEcH4wHPZAKeY="},"url":"https://www.scribd.com/document/91612143/1","top_badge":null},"116216825":{"type":"document","id":116216825,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/116216825/149x198/59a695eb18/1355132562?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/116216825/298x396/d66e7c39bd/1355132562?v=1","title":"Readme","short_title":"Readme","author":"edit.tools","tracking":{"object_type":"document","object_id":116216825,"track":"flattened_recommender","doc_uuid":"W3pKMUDcC8HvP5VP6DyVLVt2sJg="},"url":"https://www.scribd.com/document/116216825/Readme","top_badge":null},"121842523":{"type":"document","id":121842523,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/121842523/149x198/3a023c0d04/1358972850?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/121842523/298x396/8a7923fbbb/1358972850?v=1","title":"Form Builder","short_title":"Form Builder","author":"Dhiresh Verma","tracking":{"object_type":"document","object_id":121842523,"track":"flattened_recommender","doc_uuid":"w8mthuNcokbuoDCocnpHN/DempU="},"url":"https://www.scribd.com/document/121842523/Form-Builder","top_badge":null},"148596147":{"type":"document","id":148596147,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/148596147/149x198/f6437b8fb5/1417407455?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/148596147/298x396/384f4a0a88/1417407455?v=1","title":"Lee Gumnic Resume\r\n","short_title":"Lee Gumnic Resume\r\n","author":"Lee Gumnic","tracking":{"object_type":"document","object_id":148596147,"track":"flattened_recommender","doc_uuid":"cRmjxixMePwZS4PepLP2OKUbuck="},"url":"https://www.scribd.com/document/148596147/Lee-Gumnic-Resume","top_badge":null},"163564256":{"type":"book","id":163564256,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163564256/149x198/4d140b8606/1540136833?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163564256/298x396/3f016be665/1540136833?v=1","title":"Beautiful Ruins: A Novel","short_title":"Beautiful Ruins","author":"Jess Walter","tracking":{"object_type":"document","object_id":163564256,"track":"flattened_recommender","doc_uuid":"rnEEZOvvRaZYBAt5uMkDEEjcbhY="},"url":"https://www.scribd.com/book/163564256/Beautiful-Ruins-A-Novel","top_badge":null},"163579056":{"type":"book","id":163579056,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163579056/149x198/e3ae8b9345/1540142489?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163579056/298x396/c599e1583f/1540142489?v=1","title":"The Art of Racing in the Rain: A Novel","short_title":"The Art of Racing in the Rain","author":"Garth Stein","tracking":{"object_type":"document","object_id":163579056,"track":"flattened_recommender","doc_uuid":"llk7qrN65S2MEgJdUX+3NTnHTjc="},"url":"https://www.scribd.com/book/163579056/The-Art-of-Racing-in-the-Rain-A-Novel","top_badge":null},"163580087":{"type":"book","id":163580087,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163580087/149x198/df75726300/1540143826?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163580087/298x396/012861be61/1540143826?v=1","title":"Bel Canto","short_title":"Bel Canto","author":"Ann Patchett","tracking":{"object_type":"document","object_id":163580087,"track":"flattened_recommender","doc_uuid":"4pZjnYOt9HoWIo640Am3r50rOHY="},"url":"https://www.scribd.com/book/163580087/Bel-Canto","top_badge":null},"163603389":{"type":"book","id":163603389,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163603389/149x198/7c1ceeb759/1540148090?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163603389/298x396/2c8c5e4da3/1540148090?v=1","title":"A Prayer for Owen Meany: A Novel","short_title":"A Prayer for Owen Meany","author":"John Irving","tracking":{"object_type":"document","object_id":163603389,"track":"flattened_recommender","doc_uuid":"YaCAnxo0IIOtUHs5smNVjL3JgJ8="},"url":"https://www.scribd.com/book/163603389/A-Prayer-for-Owen-Meany-A-Novel","top_badge":null},"163646054":{"type":"book","id":163646054,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163646054/149x198/73d89ab0b4/1540136106?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/163646054/298x396/92feb6c9c7/1540136106?v=1","title":"Devil in the Grove: Thurgood Marshall, the Groveland Boys, and the Dawn of a New America","short_title":"Devil in the Grove","author":"Gilbert King","tracking":{"object_type":"document","object_id":163646054,"track":"flattened_recommender","doc_uuid":"S5JvUfdfuhHmjALILnnv1QqXTC8="},"url":"https://www.scribd.com/book/163646054/Devil-in-the-Grove-Thurgood-Marshall-the-Groveland-Boys-and-the-Dawn-of-a-New-America","top_badge":null},"163647832":{"type":"book","id":163647832,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163647832/149x198/974fcd39b2/1540135556?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/163647832/298x396/58f221bfa6/1540135556?v=1","title":"The Cider House Rules","short_title":"The Cider House Rules","author":"John Irving","tracking":{"object_type":"document","object_id":163647832,"track":"flattened_recommender","doc_uuid":"jvntjdSuLtmZx/2HTj8GL+8REdo="},"url":"https://www.scribd.com/book/163647832/The-Cider-House-Rules","top_badge":null},"182522032":{"type":"book","id":182522032,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182522032/149x198/e1b9e42cb5/1540136480?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182522032/298x396/ddcc62ae69/1540136480?v=1","title":"The Bonfire of the Vanities: A Novel","short_title":"The Bonfire of the Vanities","author":"Tom Wolfe","tracking":{"object_type":"document","object_id":182522032,"track":"flattened_recommender","doc_uuid":"FeP2d0WrDy8hZUOFQh/cliwcO7o="},"url":"https://www.scribd.com/book/182522032/The-Bonfire-of-the-Vanities-A-Novel","top_badge":null},"182546874":{"type":"book","id":182546874,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182546874/149x198/f82b3526b2/1540143894?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182546874/298x396/8079e74998/1540143894?v=1","title":"The Love Affairs of Nathaniel P.: A Novel","short_title":"The Love Affairs of Nathaniel P.","author":"Adelle Waldman","tracking":{"object_type":"document","object_id":182546874,"track":"flattened_recommender","doc_uuid":"9pYGnJ2J7XLiptAHRTOyhylVNho="},"url":"https://www.scribd.com/book/182546874/The-Love-Affairs-of-Nathaniel-P-A-Novel","top_badge":null},"182553141":{"type":"book","id":182553141,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182553141/149x198/9d8b4953ee/1540142861?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182553141/298x396/89521cc859/1540142861?v=1","title":"The World Is Flat 3.0: A Brief History of the Twenty-first Century","short_title":"The World Is Flat 3.0","author":"Thomas L. Friedman","tracking":{"object_type":"document","object_id":182553141,"track":"flattened_recommender","doc_uuid":"JdnhjsMUSEZDNCy+E7PCkGZ4hlM="},"url":"https://www.scribd.com/book/182553141/The-World-Is-Flat-3-0-A-Brief-History-of-the-Twenty-first-Century","top_badge":null},"182560283":{"type":"book","id":182560283,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/182560283/149x198/0601b1931c/1540140610?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182560283/298x396/f6a21d4103/1540140610?v=1","title":"Wolf Hall: A Novel","short_title":"Wolf Hall","author":"Hilary Mantel","tracking":{"object_type":"document","object_id":182560283,"track":"flattened_recommender","doc_uuid":"zMybHxRjY/5V1YcnaCCb0Qw8hYk="},"url":"https://www.scribd.com/book/182560283/Wolf-Hall-A-Novel","top_badge":null},"182565115":{"type":"book","id":182565115,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182565115/149x198/825ad48fb6/1540141909?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/182565115/298x396/e6af4ca8dd/1540141909?v=1","title":"The Silver Linings Playbook: A Novel","short_title":"The Silver Linings Playbook","author":"Matthew Quick","tracking":{"object_type":"document","object_id":182565115,"track":"flattened_recommender","doc_uuid":"Ua6gLAsg7aFMALRyX0KLt3cnshs="},"url":"https://www.scribd.com/book/182565115/The-Silver-Linings-Playbook-A-Novel","top_badge":null},"187959251":{"type":"document","id":187959251,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/187959251/149x198/aba828a8ed/1385733903?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/187959251/298x396/df88e33a2e/1385733903?v=1","title":"bad804q015a1_OracleMOCExtension","short_title":"bad804q015a1_OracleMOCExtension","author":"jhuskanovic","tracking":{"object_type":"document","object_id":187959251,"track":"flattened_recommender","doc_uuid":"Bf3IUkr8n903HuZ6ichZYx0MI3o="},"url":"https://www.scribd.com/document/187959251/bad804q015a1-OracleMOCExtension","top_badge":null},"191211292":{"type":"document","id":191211292,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/191211292/149x198/e8830fe4c7/1386891584?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/191211292/298x396/f68ddce605/1386891584?v=1","title":"When Should I Rebuild My Indexes","short_title":"When Should I Rebuild My Indexes","author":"alok_mishra4533","tracking":{"object_type":"document","object_id":191211292,"track":"flattened_recommender","doc_uuid":"o2P1qM1Z/zoRODCiw5X2AiarO+k="},"url":"https://www.scribd.com/document/191211292/When-Should-I-Rebuild-My-Indexes","top_badge":null},"202691564":{"type":"book","id":202691564,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/202691564/149x198/de3999cc66/1540145833?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/202691564/298x396/0ba4b4666c/1540145833?v=1","title":"Smart People Should Build Things: How to Restore Our Culture of Achievement, Build a Path for Entrepreneurs, and Create New Jobs in America","short_title":"Smart People Should Build Things","author":"Andrew Yang","tracking":{"object_type":"document","object_id":202691564,"track":"flattened_recommender","doc_uuid":"AusF/T/IqiZipOAh/7FkSR/CKfs="},"url":"https://www.scribd.com/book/202691564/Smart-People-Should-Build-Things-How-to-Restore-Our-Culture-of-Achievement-Build-a-Path-for-Entrepreneurs-and-Create-New-Jobs-in-America","top_badge":null},"209355407":{"type":"document","id":209355407,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/209355407/149x198/109c74812d/1448564339?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/209355407/298x396/2fd230d0c4/1448564339?v=1","title":"Atlantic Park Hotel Management System","short_title":"Atlantic Park Hotel Management System","author":"Irfan Efendi Gea","tracking":{"object_type":"document","object_id":209355407,"track":"flattened_recommender","doc_uuid":"q9qqOsnpWdTanOwIGErvv9g7oD0="},"url":"https://www.scribd.com/document/209355407/Atlantic-Park-Hotel-Management-System","top_badge":null},"211302755":{"type":"book","id":211302755,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/211302755/149x198/e130bab094/1540147002?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/211302755/298x396/19f10ceb3f/1540147002?v=1","title":"The Hard Thing About Hard Things: Building a Business When There Are No Easy Answers","short_title":"The Hard Thing About Hard Things","author":"Ben Horowitz","tracking":{"object_type":"document","object_id":211302755,"track":"flattened_recommender","doc_uuid":"zzuoysb6eTlNmVCIwcJ/UcHT0Zw="},"url":"https://www.scribd.com/book/211302755/The-Hard-Thing-About-Hard-Things-Building-a-Business-When-There-Are-No-Easy-Answers","top_badge":null},"212863738":{"type":"book","id":212863738,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/212863738/149x198/486257e90d/1540144658?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/212863738/298x396/40684a0550/1540144658?v=1","title":"The Unwinding: An Inner History of the New America","short_title":"The Unwinding","author":"George Packer","tracking":{"object_type":"document","object_id":212863738,"track":"flattened_recommender","doc_uuid":"RCZIS+cbL8VCGueP1bTMVyQKgN4="},"url":"https://www.scribd.com/book/212863738/The-Unwinding-An-Inner-History-of-the-New-America","top_badge":null},"214318198":{"type":"document","id":214318198,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/214318198/149x198/e5735d2999/1395708065?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/214318198/298x396/9a6cf613fc/1395708065?v=1","title":"Model View Controller - Inside View","short_title":"Model View Controller - Inside View","author":"KanmaniKarthik","tracking":{"object_type":"document","object_id":214318198,"track":"flattened_recommender","doc_uuid":"8CPfsY3+oFbu5JIa3rVkbQBQgpk="},"url":"https://www.scribd.com/presentation/214318198/Model-View-Controller-Inside-View","top_badge":null},"216442529":{"type":"book","id":216442529,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/216442529/149x198/e28b506e87/1540137183?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/216442529/298x396/716aaad647/1540137183?v=1","title":"Lovers at the Chameleon Club, Paris 1932: A Novel","short_title":"Lovers at the Chameleon Club, Paris 1932","author":"Francine Prose","tracking":{"object_type":"document","object_id":216442529,"track":"flattened_recommender","doc_uuid":"oeXEb5grrwKlROtd0mv+SkixkC0="},"url":"https://www.scribd.com/book/216442529/Lovers-at-the-Chameleon-Club-Paris-1932-A-Novel","top_badge":null},"219586426":{"type":"document","id":219586426,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/219586426/149x198/a0d3830961/1398157067?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/219586426/298x396/bf9a98a2fa/1398157067?v=1","title":"Php Readme","short_title":"Php Readme","author":"Adita Rini Susilowati","tracking":{"object_type":"document","object_id":219586426,"track":"flattened_recommender","doc_uuid":"VuXKMM2rsuvJAG52qSb0ujQDCVk="},"url":"https://www.scribd.com/document/219586426/Php-Readme","top_badge":null},"224248520":{"type":"book","id":224248520,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224248520/149x198/0427bca488/1540147699?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224248520/298x396/505053db71/1540147699?v=1","title":"The Kitchen House: A Novel","short_title":"The Kitchen House","author":"Kathleen Grissom","tracking":{"object_type":"document","object_id":224248520,"track":"flattened_recommender","doc_uuid":"mYUNJ9cEX8Iu8HZNLO8AuvLp+T8="},"url":"https://www.scribd.com/book/224248520/The-Kitchen-House-A-Novel","top_badge":null},"224248577":{"type":"book","id":224248577,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224248577/149x198/97fab15653/1540133544?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224248577/298x396/35883a5fcb/1540133544?v=1","title":"The Rosie Project: A Novel","short_title":"The Rosie Project","author":"Graeme Simsion","tracking":{"object_type":"document","object_id":224248577,"track":"flattened_recommender","doc_uuid":"yxcG8uLg1Tfo0dwn2tW9o6r3T10="},"url":"https://www.scribd.com/book/224248577/The-Rosie-Project-A-Novel","top_badge":null},"224252178":{"type":"book","id":224252178,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224252178/149x198/77a859fdd8/1540138966?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224252178/298x396/dfbec9e04b/1540138966?v=1","title":"Brooklyn: A Novel","short_title":"Brooklyn","author":"Colm Toibin","tracking":{"object_type":"document","object_id":224252178,"track":"flattened_recommender","doc_uuid":"2OvGuy0voPxouPNx8m69N0FuA2Q="},"url":"https://www.scribd.com/book/224252178/Brooklyn-A-Novel","top_badge":null},"224258670":{"type":"book","id":224258670,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224258670/149x198/b2ee6fe90c/1540151031?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224258670/298x396/eb9e673a3c/1540151031?v=1","title":"The Prize: The Epic Quest for Oil, Money & Power","short_title":"The Prize","author":"Daniel Yergin","tracking":{"object_type":"document","object_id":224258670,"track":"flattened_recommender","doc_uuid":"U8Js/Wd6zIlkFVduu+UrKvrvyrs="},"url":"https://www.scribd.com/book/224258670/The-Prize-The-Epic-Quest-for-Oil-Money-Power","top_badge":null},"224266633":{"type":"book","id":224266633,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224266633/149x198/196f9b9902/1540151326?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224266633/298x396/c65dbae83f/1540151326?v=1","title":"The Perks of Being a Wallflower","short_title":"The Perks of Being a Wallflower","author":"Stephen Chbosky","tracking":{"object_type":"document","object_id":224266633,"track":"flattened_recommender","doc_uuid":"N6p2iXt2VpzcVuvSaW3MXo0/wf8="},"url":"https://www.scribd.com/book/224266633/The-Perks-of-Being-a-Wallflower","top_badge":null},"224270540":{"type":"book","id":224270540,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224270540/149x198/246ef7879c/1540150455?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224270540/298x396/b9d115f691/1540150455?v=1","title":"The Master","short_title":"The Master","author":"Colm Toibin","tracking":{"object_type":"document","object_id":224270540,"track":"flattened_recommender","doc_uuid":"nDYsFqaBK88HbUK4wBJFfG7lHlc="},"url":"https://www.scribd.com/book/224270540/The-Master","top_badge":null},"224285255":{"type":"book","id":224285255,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224285255/149x198/a61ed79e9b/1540133491?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224285255/298x396/a6488a57c8/1540133491?v=1","title":"The Flamethrowers: A Novel","short_title":"The Flamethrowers","author":"Rachel Kushner","tracking":{"object_type":"document","object_id":224285255,"track":"flattened_recommender","doc_uuid":"nZGWgXvefBwtx9MYKqotjayxOtA="},"url":"https://www.scribd.com/book/224285255/The-Flamethrowers-A-Novel","top_badge":null},"224306619":{"type":"book","id":224306619,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224306619/149x198/5a300f585d/1540147564?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224306619/298x396/21c3e990fc/1540147564?v=1","title":"The Light Between Oceans: A Novel","short_title":"The Light Between Oceans","author":"M.L. Stedman","tracking":{"object_type":"document","object_id":224306619,"track":"flattened_recommender","doc_uuid":"j6Yi62lxd2kx8bric5at8vMwBTQ="},"url":"https://www.scribd.com/book/224306619/The-Light-Between-Oceans-A-Novel","top_badge":null},"224326250":{"type":"book","id":224326250,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224326250/149x198/f1e7bf86b3/1540144043?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224326250/298x396/67d6eee06a/1540144043?v=1","title":"Steve Jobs","short_title":"Steve Jobs","author":"Walter Isaacson","tracking":{"object_type":"document","object_id":224326250,"track":"flattened_recommender","doc_uuid":"mztS/KQfy/vY1gHT5fyI9grIhxQ="},"url":"https://www.scribd.com/book/224326250/Steve-Jobs","top_badge":null},"224349281":{"type":"book","id":224349281,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224349281/149x198/c8e6142eca/1540152317?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224349281/298x396/121ea6d44a/1540152317?v=1","title":"How To Win Friends and Influence People","short_title":"How To Win Friends and Influence People","author":"Dale Carnegie","tracking":{"object_type":"document","object_id":224349281,"track":"flattened_recommender","doc_uuid":"Q2395yfolN3mjUhN50igUfbdf1A="},"url":"https://www.scribd.com/book/224349281/How-To-Win-Friends-and-Influence-People","top_badge":null},"224355300":{"type":"book","id":224355300,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224355300/149x198/e0393734b6/1540140558?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224355300/298x396/fac4cdb725/1540140558?v=1","title":"Grand Pursuit: The Story of Economic Genius","short_title":"Grand Pursuit","author":"Sylvia Nasar","tracking":{"object_type":"document","object_id":224355300,"track":"flattened_recommender","doc_uuid":"8cyHJ9ATSxWzwAYWsaqUZ/4A1No="},"url":"https://www.scribd.com/book/224355300/Grand-Pursuit-The-Story-of-Economic-Genius","top_badge":null},"224369806":{"type":"book","id":224369806,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224369806/149x198/d2fc5923b8/1540140509?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224369806/298x396/a026add765/1540140509?v=1","title":"The Emperor of All Maladies: A Biography of Cancer","short_title":"The Emperor of All Maladies","author":"Siddhartha Mukherjee","tracking":{"object_type":"document","object_id":224369806,"track":"flattened_recommender","doc_uuid":"+Rlrm/yon6Q1uJBM0jsEMZslrsk="},"url":"https://www.scribd.com/book/224369806/The-Emperor-of-All-Maladies-A-Biography-of-Cancer","top_badge":null},"224410295":{"type":"book","id":224410295,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224410295/149x198/5f74dd59cd/1540140140?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224410295/298x396/58644b8626/1540140140?v=1","title":"Team of Rivals: The Political Genius of Abraham Lincoln","short_title":"Team of Rivals","author":"Doris Kearns Goodwin","tracking":{"object_type":"document","object_id":224410295,"track":"flattened_recommender","doc_uuid":"+lwZKalyWHswLwfgt5nZ06xvnkM="},"url":"https://www.scribd.com/book/224410295/Team-of-Rivals-The-Political-Genius-of-Abraham-Lincoln","top_badge":null},"224419023":{"type":"book","id":224419023,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224419023/149x198/7e946216e0/1540140234?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224419023/298x396/08758c4819/1540140234?v=1","title":"John Adams","short_title":"John Adams","author":"David McCullough","tracking":{"object_type":"document","object_id":224419023,"track":"flattened_recommender","doc_uuid":"qkXKGqSbNkB7kbR0/BhON01nAL8="},"url":"https://www.scribd.com/book/224419023/John-Adams","top_badge":null},"224420008":{"type":"book","id":224420008,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224420008/149x198/7a7e91eff2/1540137197?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/224420008/298x396/7fdc43e330/1540137197?v=1","title":"The Constant Gardener: A Novel","short_title":"The Constant Gardener","author":"John le Carré","tracking":{"object_type":"document","object_id":224420008,"track":"flattened_recommender","doc_uuid":"vpvvJRnCOjzojkO6pQhYLEzwzis="},"url":"https://www.scribd.com/book/224420008/The-Constant-Gardener-A-Novel","top_badge":null},"224426877":{"type":"book","id":224426877,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224426877/149x198/67b53f7428/1540137214?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/224426877/298x396/61c4862b68/1540137214?v=1","title":"Angela's Ashes: A Memoir","short_title":"Angela's Ashes","author":"Frank McCourt","tracking":{"object_type":"document","object_id":224426877,"track":"flattened_recommender","doc_uuid":"Fy9Nhxc77UoR4+vDHd+EgSYZa8M="},"url":"https://www.scribd.com/book/224426877/Angela-s-Ashes-A-Memoir","top_badge":null},"225916486":{"type":"book","id":225916486,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/225916486/149x198/ceefd53ff2/1540143245?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/225916486/298x396/3fda0d41f4/1540143245?v=1","title":"A Heartbreaking Work Of Staggering Genius: A Memoir Based on a True Story","short_title":"A Heartbreaking Work Of Staggering Genius","author":"Dave Eggers","tracking":{"object_type":"document","object_id":225916486,"track":"flattened_recommender","doc_uuid":"MVWvOrQTZYhs4SK4cmHiE4yrxXY="},"url":"https://www.scribd.com/book/225916486/A-Heartbreaking-Work-Of-Staggering-Genius-A-Memoir-Based-on-a-True-Story","top_badge":null},"231689346":{"type":"book","id":231689346,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/231689346/149x198/8820ffce2e/1540133769?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/231689346/298x396/8022aee462/1540133769?v=1","title":"The Blazing World: A Novel","short_title":"The Blazing World","author":"Siri Hustvedt","tracking":{"object_type":"document","object_id":231689346,"track":"flattened_recommender","doc_uuid":"Dw2J0WDn2qS6VzQw6+jEamZbrC8="},"url":"https://www.scribd.com/book/231689346/The-Blazing-World-A-Novel","top_badge":null},"234028503":{"type":"book","id":234028503,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/234028503/149x198/600d1fe3f9/1540145261?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/234028503/298x396/1455400f40/1540145261?v=1","title":"Bad Feminist: Essays","short_title":"Bad Feminist","author":"Roxane Gay","tracking":{"object_type":"document","object_id":234028503,"track":"flattened_recommender","doc_uuid":"KN2dhUOxy86FtLLvudWTfHE27C0="},"url":"https://www.scribd.com/book/234028503/Bad-Feminist-Essays","top_badge":null},"235411767":{"type":"book","id":235411767,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/235411767/149x198/ce356815f8/1540140006?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/235411767/298x396/a289a2fc2a/1540140006?v=1","title":"A Man Called Ove: A Novel","short_title":"A Man Called Ove","author":"Fredrik Backman","tracking":{"object_type":"document","object_id":235411767,"track":"flattened_recommender","doc_uuid":"BvNuBRSDO5t2oEEBXgUkwPcicZ0="},"url":"https://www.scribd.com/book/235411767/A-Man-Called-Ove-A-Novel","top_badge":null},"235583696":{"type":"book","id":235583696,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/235583696/149x198/29700e772d/1540146753?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/235583696/298x396/46800f01c6/1540146753?v=1","title":"We Are Not Ourselves: A Novel","short_title":"We Are Not Ourselves","author":"Matthew Thomas","tracking":{"object_type":"document","object_id":235583696,"track":"flattened_recommender","doc_uuid":"h2C/TuTcM1LR+UIynIMrp2E+urc="},"url":"https://www.scribd.com/book/235583696/We-Are-Not-Ourselves-A-Novel","top_badge":null},"238704340":{"type":"book","id":238704340,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/238704340/149x198/58ed32b584/1540142456?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/238704340/298x396/d84f33deab/1540142456?v=1","title":"This Changes Everything: Capitalism vs. The Climate","short_title":"This Changes Everything","author":"Naomi Klein","tracking":{"object_type":"document","object_id":238704340,"track":"flattened_recommender","doc_uuid":"vam7uoL/I8h16LrraLHwrwWxnIE="},"url":"https://www.scribd.com/book/238704340/This-Changes-Everything-Capitalism-vs-The-Climate","top_badge":null},"239488191":{"type":"book","id":239488191,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/239488191/149x198/7381d3ba45/1540136752?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/239488191/298x396/891d3f4926/1540136752?v=1","title":"The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution","short_title":"The Innovators","author":"Walter Isaacson","tracking":{"object_type":"document","object_id":239488191,"track":"flattened_recommender","doc_uuid":"w94HbwYzEFZwdhppeji1v1Kv5/8="},"url":"https://www.scribd.com/book/239488191/The-Innovators-How-a-Group-of-Hackers-Geniuses-and-Geeks-Created-the-Digital-Revolution","top_badge":null},"239588474":{"type":"book","id":239588474,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/239588474/149x198/8a4150948e/1540147564?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/239588474/298x396/644cc7285e/1540147564?v=1","title":"Rise of ISIS: A Threat We Can't Ignore","short_title":"Rise of ISIS","author":"Jay Sekulow","tracking":{"object_type":"document","object_id":239588474,"track":"flattened_recommender","doc_uuid":"6MLkBYPI9ZsCfP1I01q/7mbF8oo="},"url":"https://www.scribd.com/book/239588474/Rise-of-ISIS-A-Threat-We-Can-t-Ignore","top_badge":null},"244157917":{"type":"book","id":244157917,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/244157917/149x198/ce51d31665/1540137753?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/244157917/298x396/d0cbd421a3/1540137753?v=1","title":"Yes Please","short_title":"Yes Please","author":"Amy Poehler","tracking":{"object_type":"document","object_id":244157917,"track":"flattened_recommender","doc_uuid":"xhnm96n8QoJDgk7UvwfzqcQi8BY="},"url":"https://www.scribd.com/book/244157917/Yes-Please","top_badge":null},"246730409":{"type":"document","id":246730409,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/246730409/149x198/47db3b6408/1416111413?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/246730409/298x396/c13ae39b99/1416111413?v=1","title":"hasdasd","short_title":"hasdasd","author":"Giancarlo Ventura","tracking":{"object_type":"document","object_id":246730409,"track":"flattened_recommender","doc_uuid":"ae/p2IEY3umXfIh1lpEDawiF1H0="},"url":"https://www.scribd.com/document/246730409/hasdasd","top_badge":null},"246897514":{"type":"book","id":246897514,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/246897514/149x198/9d722fcc90/1540148611?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/246897514/298x396/2244bff6fc/1540148611?v=1","title":"The Wallcreeper","short_title":"The Wallcreeper","author":"Nell Zink","tracking":{"object_type":"document","object_id":246897514,"track":"flattened_recommender","doc_uuid":"KPEx7Z94z67RYzUF1cXz1BuEvD0="},"url":"https://www.scribd.com/book/246897514/The-Wallcreeper","top_badge":null},"249308236":{"type":"book","id":249308236,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249308236/149x198/345de5ca38/1540137556?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249308236/298x396/4e9d2e54be/1540137556?v=1","title":"Interpreter of Maladies","short_title":"Interpreter of Maladies","author":"Jhumpa Lahiri","tracking":{"object_type":"document","object_id":249308236,"track":"flattened_recommender","doc_uuid":"Jsc0KnZPgA7XfVBGc4rNZMBsfy4="},"url":"https://www.scribd.com/book/249308236/Interpreter-of-Maladies","top_badge":null},"249308781":{"type":"book","id":249308781,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249308781/149x198/44cce4d99a/1540145146?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/249308781/298x396/3fb7c9a745/1540145146?v=1","title":"Life of Pi","short_title":"Life of Pi","author":"Yann Martel","tracking":{"object_type":"document","object_id":249308781,"track":"flattened_recommender","doc_uuid":"WgTMn7Fzaph9q0rKwq2Fa1JLWqg="},"url":"https://www.scribd.com/book/249308781/Life-of-Pi","top_badge":null},"249309502":{"type":"book","id":249309502,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/249309502/149x198/a536db5ae1/1540138441?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/249309502/298x396/aa0185412b/1540138441?v=1","title":"Extremely Loud and Incredibly Close: A Novel","short_title":"Extremely Loud and Incredibly Close","author":"Jonathan Safran Foer","tracking":{"object_type":"document","object_id":249309502,"track":"flattened_recommender","doc_uuid":"pw0/Hc2w8MOqokYCixU4EyFmgug="},"url":"https://www.scribd.com/book/249309502/Extremely-Loud-and-Incredibly-Close-A-Novel","top_badge":null},"250006950":{"type":"book","id":250006950,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/250006950/149x198/dfc24938b6/1540138217?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/250006950/298x396/a7ea4fedc0/1540138217?v=1","title":"The First Bad Man: A Novel","short_title":"The First Bad Man","author":"Miranda July","tracking":{"object_type":"document","object_id":250006950,"track":"flattened_recommender","doc_uuid":"NIUdJpF0mkB+iozB3mLP705rAE4="},"url":"https://www.scribd.com/book/250006950/The-First-Bad-Man-A-Novel","top_badge":null},"250854139":{"type":"document","id":250854139,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/250854139/149x198/41d09a88a3/1419345753?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/250854139/298x396/738dc8d85a/1419345753?v=1","title":"jurnal pemrograman komputer.pdf","short_title":"jurnal pemrograman komputer.pdf","author":"AnissaRiandaPutri","tracking":{"object_type":"document","object_id":250854139,"track":"flattened_recommender","doc_uuid":"CwoiRJb+x1OSQ14zKY6m8kFBjs0="},"url":"https://www.scribd.com/document/250854139/jurnal-pemrograman-komputer-pdf","top_badge":null},"253264900":{"type":"book","id":253264900,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/253264900/149x198/5948645a35/1540147093?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/253264900/298x396/912824fccd/1540147093?v=1","title":"Sapiens: A Brief History of Humankind","short_title":"Sapiens","author":"Yuval Noah Harari","tracking":{"object_type":"document","object_id":253264900,"track":"flattened_recommender","doc_uuid":"xcSfxCVV1lrbQZ97WRC3D3ZMn6w="},"url":"https://www.scribd.com/book/253264900/Sapiens-A-Brief-History-of-Humankind","top_badge":null},"254039238":{"type":"book","id":254039238,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/254039238/149x198/278d17c7f4/1540143141?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/254039238/298x396/8e93835fcc/1540143141?v=1","title":"Leaving Berlin: A Novel","short_title":"Leaving Berlin","author":"Joseph Kanon","tracking":{"object_type":"document","object_id":254039238,"track":"flattened_recommender","doc_uuid":"vnpEaGjBSxkemtIgFnzFJoc525A="},"url":"https://www.scribd.com/book/254039238/Leaving-Berlin-A-Novel","top_badge":null},"256051000":{"type":"document","id":256051000,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/256051000/149x198/028a36d2ad/1424197807?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/256051000/298x396/1f5dd2302c/1424197807?v=1","title":"MySQL Test","short_title":"MySQL Test","author":"iamhaidar","tracking":{"object_type":"document","object_id":256051000,"track":"flattened_recommender","doc_uuid":"yfS2JK+E/A/+4Hxd0zNVlTNCUg4="},"url":"https://www.scribd.com/document/256051000/MySQL-Test","top_badge":null},"260115407":{"type":"document","id":260115407,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/260115407/149x198/5d3d95ee9a/1427459830?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/260115407/298x396/ef27fe035a/1427459830?v=1","title":"Cara Mengisi Data Base","short_title":"Cara Mengisi Data Base","author":"Muhammad Yunus","tracking":{"object_type":"document","object_id":260115407,"track":"flattened_recommender","doc_uuid":"aIrdvp1Py4u/UOVMatfIXDIfriU="},"url":"https://www.scribd.com/document/260115407/Cara-Mengisi-Data-Base","top_badge":null},"263504218":{"type":"book","id":263504218,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/263504218/149x198/5791495c90/1540145099?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/263504218/298x396/ca05b40921/1540145099?v=1","title":"Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future","short_title":"Elon Musk","author":"Ashlee Vance","tracking":{"object_type":"document","object_id":263504218,"track":"flattened_recommender","doc_uuid":"tKFInV2mknGoKwkoBwvtAmUnw1w="},"url":"https://www.scribd.com/book/263504218/Elon-Musk-Tesla-SpaceX-and-the-Quest-for-a-Fantastic-Future","top_badge":null},"273440534":{"type":"book","id":273440534,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/273440534/149x198/d972c41ea4/1540144513?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/273440534/298x396/79bdc35da6/1540144513?v=1","title":"The Incarnations: A Novel","short_title":"The Incarnations","author":"Susan Barker","tracking":{"object_type":"document","object_id":273440534,"track":"flattened_recommender","doc_uuid":"KXRnMwjNOFIQvThZcHn1XSCoaQM="},"url":"https://www.scribd.com/book/273440534/The-Incarnations-A-Novel","top_badge":null},"273582508":{"type":"book","id":273582508,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/273582508/149x198/1af6c958cc/1540141525?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/273582508/298x396/6f8ad65faa/1540141525?v=1","title":"You Too Can Have a Body Like Mine: A Novel","short_title":"You Too Can Have a Body Like Mine","author":"Alexandra Kleeman","tracking":{"object_type":"document","object_id":273582508,"track":"flattened_recommender","doc_uuid":"OIbbEKuCvkq9J6sBMBKR0jy7AMU="},"url":"https://www.scribd.com/book/273582508/You-Too-Can-Have-a-Body-Like-Mine-A-Novel","top_badge":null},"274363284":{"type":"document","id":274363284,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/274363284/149x198/b5e029709b/1439446314?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/274363284/298x396/98ba035712/1439446314?v=1","title":"SynapseIndia Sharing Feedback on PHP Scripting Language","short_title":"SynapseIndia Sharing Feedback on PHP Scripting Language","author":"synapseindia","tracking":{"object_type":"document","object_id":274363284,"track":"flattened_recommender","doc_uuid":"nGNK91kTKMxO2Xaz997ZMNDJCSA="},"url":"https://www.scribd.com/presentation/274363284/SynapseIndia-Sharing-Feedback-on-PHP-Scripting-Language","top_badge":null},"282766939":{"type":"book","id":282766939,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/282766939/149x198/0fd38dc477/1540144416?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/282766939/298x396/ce234488d0/1540144416?v=1","title":"Dispatches from Pluto: Lost and Found in the Mississippi Delta","short_title":"Dispatches from Pluto","author":"Richard Grant","tracking":{"object_type":"document","object_id":282766939,"track":"flattened_recommender","doc_uuid":"p+YWQDCFJ1mn1rhcmu0ZCMbd5Qc="},"url":"https://www.scribd.com/book/282766939/Dispatches-from-Pluto-Lost-and-Found-in-the-Mississippi-Delta","top_badge":null},"293461549":{"type":"book","id":293461549,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/293461549/149x198/133f5a7fcd/1540140988?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/word_document/293461549/298x396/077cb2a3ef/1540140988?v=1","title":"The New Confessions of an Economic Hit Man","short_title":"The New Confessions of an Economic Hit Man","author":"John Perkins","tracking":{"object_type":"document","object_id":293461549,"track":"flattened_recommender","doc_uuid":"2x7VugKWCJIl3dWkAzfCpzUr64s="},"url":"https://www.scribd.com/book/293461549/The-New-Confessions-of-an-Economic-Hit-Man","top_badge":null},"295343611":{"type":"document","id":295343611,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/295343611/149x198/a38ff64f44/1493592765?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/295343611/298x396/ed02d7aa14/1493592765?v=1","title":"Oracle Data Integrator 11g - Integration and Administration Activity Guide Volumen II","short_title":"Oracle Data Integrator 11g - Integration and Administration Activity Guide Volumen II","author":"danielhidalgop","tracking":{"object_type":"document","object_id":295343611,"track":"flattened_recommender","doc_uuid":"XFfJh7zKeSsDaAR475MrrixCNdM="},"url":"https://www.scribd.com/doc/295343611/Oracle-Data-Integrator-11g-Integration-and-Administration-Activity-Guide-Volumen-II","top_badge":null},"308034016":{"type":"document","id":308034016,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/308034016/149x198/4a1d86e812/1460424680?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/308034016/298x396/1b23151cc8/1460424680?v=1","title":"Codeigniter Manual","short_title":"Codeigniter Manual","author":"carrizof","tracking":{"object_type":"document","object_id":308034016,"track":"flattened_recommender","doc_uuid":"JODlN1ssbTGGyPzl+J9dje3m1HQ="},"url":"https://www.scribd.com/document/308034016/Codeigniter-Manual","top_badge":null},"314934095":{"type":"document","id":314934095,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/314934095/149x198/77afde91c0/1465206141?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/314934095/298x396/2a12b6d782/1465206141?v=1","title":"CIS 336 PAPERS Learn by Doing/cis336papers.com","short_title":"CIS 336 PAPERS Learn by Doing/cis336papers.com","author":"munna28","tracking":{"object_type":"document","object_id":314934095,"track":"flattened_recommender","doc_uuid":"6PxLQqETngupq4MmNEEAnlB6rtU="},"url":"https://www.scribd.com/presentation/314934095/CIS-336-PAPERS-Learn-by-Doing-cis336papers-com","top_badge":null},"322522909":{"type":"document","id":322522909,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/322522909/149x198/0ed3717ea4/1472529412?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/322522909/298x396/40b8268969/1472529412?v=1","title":"Mobile Device and Web Based Remote Controller on Data Repository","short_title":"Mobile Device and Web Based Remote Controller on Data Repository","author":"SEP-Publisher","tracking":{"object_type":"document","object_id":322522909,"track":"flattened_recommender","doc_uuid":"75tQlqQdbZTgaVBTYTtjdv8fWXA="},"url":"https://www.scribd.com/document/322522909/Mobile-Device-and-Web-Based-Remote-Controller-on-Data-Repository","top_badge":null},"332024589":{"type":"document","id":332024589,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/332024589/149x198/fb23f39d5d/1479879996?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/332024589/298x396/3a30f77c9b/1479879996?v=1","title":"(Group 5) Programming Language (1)","short_title":"(Group 5) Programming Language (1)","author":"Mikhail Hasanuddin","tracking":{"object_type":"document","object_id":332024589,"track":"flattened_recommender","doc_uuid":"OUWZQ81ldgRgX2yjRtWzfY5Bh24="},"url":"https://www.scribd.com/presentation/332024589/Group-5-Programming-Language-1","top_badge":null},"335361406":{"type":"document","id":335361406,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/335361406/149x198/5c98e082a8/1483117902?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/335361406/298x396/6ef0ca9ad4/1483117902?v=1","title":"v1i3a5","short_title":"v1i3a5","author":"abhi10aug","tracking":{"object_type":"document","object_id":335361406,"track":"flattened_recommender","doc_uuid":"UzPXJgnJAOraZw6NuZzmyZLJs4U="},"url":"https://www.scribd.com/document/335361406/v1i3a5","top_badge":null},"337536061":{"type":"book","id":337536061,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/337536061/149x198/e0fabe3d5f/1540148827?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/word_document/337536061/298x396/9e5f6dd316/1540148827?v=1","title":"The Sympathizer: A Novel (Pulitzer Prize for Fiction)","short_title":"The Sympathizer","author":"Viet Thanh Nguyen","tracking":{"object_type":"document","object_id":337536061,"track":"flattened_recommender","doc_uuid":"Gfx2VuFmXwMKtP/Xa4wZ5DUrQEo="},"url":"https://www.scribd.com/book/337536061/The-Sympathizer-A-Novel-Pulitzer-Prize-for-Fiction","top_badge":null},"356755331":{"type":"document","id":356755331,"thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/356755331/149x198/a61abf1cae/1503392918?v=1","retina_thumb_url":"https://imgv2-2-f.scribdassets.com/img/document/356755331/298x396/bf7d1d3aa9/1503392918?v=1","title":"Unit 7-PHP","short_title":"Unit 7-PHP","author":"Prince Shuv","tracking":{"object_type":"document","object_id":356755331,"track":"flattened_recommender","doc_uuid":"EXCU3bv3qCAH9oe/n9PUSiJzYe8="},"url":"https://www.scribd.com/document/356755331/Unit-7-PHP","top_badge":null},"356909277":{"type":"document","id":356909277,"thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/356909277/149x198/4fdcd267ee/1503565441?v=1","retina_thumb_url":"https://imgv2-1-f.scribdassets.com/img/document/356909277/298x396/535ed4a0e0/1503565441?v=1","title":"Architecture and Analytical Study of Magento","short_title":"Architecture and Analytical Study of Magento","author":"IRJET Journal","tracking":{"object_type":"document","object_id":356909277,"track":"flattened_recommender","doc_uuid":"YxOwzqBkqvjmGOUrh/bilH/Ie6k="},"url":"https://www.scribd.com/document/356909277/Architecture-and-Analytical-Study-of-Magento","top_badge":null}}},"seo_roadblock_props_path":"/doc-page/seo-roadblock-props/106404736","signup_context":null,"toolbar":{"search_path":"/search-4gen?allowed_pages=1%2C2&auth_token=hV1Mrk%2BqN%2FsV3h32mj4Za2KchLs%3D&authenticity_token=gWE98H7ZM49TZzp2G1rcqJO8TAvCE8CoNy3gUkpqGawaWd47C5cNvU65jiSFhAZxZfzROaeX9VsFNU7RF%2BsL7A%3D%3D&expires=1540768290&wordDocumentId=106404736&wordUploadId=109881903"},"renewal_nag_props":null}-->