Zend_Json_Server and JSON-RPC 2.0

Zend_Json_Server and JSON-RPC 2.0
The 4 available parameters are:
+ jsonrpc – the version you are using; I’m using 2.0.

word-wrap, word-break URLs and Text Content with CSS

word-wrap, word-break URLs and Text Content with CSS
To wrap long URLs, strings of text, and other content, just apply this carefully crafted chunk of CSS code to any block-level element (e.g., perfect for <pre> tags):

Rotate with CANVAS JavaScript in HTML5

Step 1: Put the JavaScript code below in your HEAD.

Step 2: Put the HTML code below into the BODY


1.getInstance() is used to retrieve a front controller instance

2.setControllerDirectory() is used to tell the dispatcher where to look for action controller class files

3.addControllerDirectory() is used to add a module name, it will set the directory for the default module -            overwriting it if it already exists.

4.getControllerDirectory() is used to get the current settings for the controller directory.

5.addModuleDirectory() allows you to pass the name of a directory containing one or more module directories.

6.getModuleDirectory() is used to determine the path to a particular module or the current module.

7.dispatch(Zend_Controller_Request_Abstract $request = null, Zend_Controller_Response_Abstract $response = null) does the heavy work of the front controller.
It may optionally take a request object and/or a response object.

8.Zend_Controller_Front::run($path) is a static method taking simply a path to a directory containing controllers.

9.resetInstance() can be used to clear all current settings.

10.setDefaultControllerName() and getDefaultControllerName() let you specify a different name to use for the default controller  and retrieve the current value.

11.setDefaultAction() and getDefaultAction() let you specify a different name to use for the default action  and retrieve the current value.

12.setRequest() and getRequest() let you specify the request class or object to use during the dispatch process and to retrieve the current object.

13.setRouter() getRouter() let you specify the router class or object to use during the dispatch process and to retrieve the current object.

14.setBaseUrl() and getBaseUrl() let you specify the base URL to strip when routing requests and to retrieve the current value.

15.setDispatcher() and getDispatcher() let you specify the dispatcher class or object to use during the dispatch process and retrieve the current object.

16.setResponse() and getResponse() let you specify the response class or object to use during the dispatch process and to retrieve the current object.

17.registerPlugin(Zend_Controller_Plugin_Abstract $plugin, $stackIndex = null) allows you to register plugin objects.

18.unregisterPlugin($plugin) let you unregister plugin objects. $plugin may be either a plugin object or a string denoting the class of plugin to unregister.

19.returnResponse($flag) is used to tell the front controller whether to return the response (TRUE) from dispatch(), or if the response should be automatically emitted (FALSE).

20.setParam($name, $value) allows you to set a single parameter of $name with value $value.

21.setParams(array $params) allows you to set multiple parameters at once using an associative array.

22.getParam($name) allows you to retrieve a single parameter at a time, using $name as the identifier.

23.getParams() allows you to retrieve the entire list of parameters at once.

24.clearParams() allows you to clear a single parameter , multiple named parameters, or the entire parameter stack.

Using Zend_Layout with the Zend Framework MVC

simple example of zend_layout.
First we define some defined default.

The next, we create LayoutController.

File layout in application\layouts\scripts\index.phtml

Read and write configuration files the format xml with Zend_Config

1. Read ini file.

 I have a configuration file /application/configs/db.ini as follows:

We use the class to read file Zend_Config_Xml db.xml


2.Write xml file

My01.xml output file:

SEO your blogger by Change the Title Tags for your Blog

Go to Layout>edit HTML in your Blogger dashboard.
Search for this tag: <data:blog.pageTitle/>
Replace this tag with the following:

Configuration multi modules in Zend Framework

1. Create the basic structure for the application

2. Create a detailed structure for each module (Admin & Default)

3. Configuration file application\index.php

4. Configuration file application\.htaccess

5.Install file contains application configuration application\configs\application.ini

6. Set the file contents application\layouts\layout.phtml

7. Create initialization files for all applications application\Bootstrap.phpl

8. Create files initializate for Admin module application\modules\admin\Bootstrap.php

9. IndexController inclusion of the Admin module - application\modules\admin\controllers\IndexController.php

10. Show indexAction content in the Admin module IndexController

- application\modules\admin\views\scripts\index\index.phtml

11. Create files initializate for Default module application\modules\default\Bootstrap.php

12.Inclusion of Default IndexController module - application\modules\default\controllers\IndexController.php

13. Display the contents of the Default IndexController indexAction in module

- application\modules\default\views\scripts\index\index.phtml

Video Facebook Platform

Hey Facebook Developers! This video is the first in a new series of how-to videos we'll be doing to show you how to make your web site or application more social with Facebook Connect.

Read and write configuration files the format ini with Zend_Config

1. Read ini file.

 I have a configuration file /application/configs/db.ini as follows:

We use the class to read file Zend_Config_Ini db.ini


2.Write ini file

My01.ini output file:

Zend_Translate and Error message

For example: You build a form with Zend_Form, the only one Email address text box is simple and used to determine Zend_Validate_EmailAddress Email is valid:

When you run the function, you attempt to enter an invalid email example: 123; á @ 12222, and of course it's an error, a heap of errors like this:

But if you want all the messages above a certain language (as Default), why? For example, you want to report in Vietnamese? You will have to use Zend_Translate by way or that. But certainly one thing that you would like to be a headache.

After some research, I found a way that I was very pleased, and in this article I want to share with you. Note that I do on Zend 1:10:

And I wrote in my file vi.csv following language

After running the function, the resulting error is as follows:

backup database mysql automatic with mysqldump

Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit
--no-defaults           Don't read default options from any options file
--defaults-file=#       Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read
  -a, --all           Deprecated. Use --create-options instead.
  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.
  -Y, --all-tablespaces
                      Dump all the tablespaces.
  -y, --no-tablespaces
                      Do not dump any tablespace information.
  --add-drop-database Add a 'DROP DATABASE' before each create.
  --add-drop-table    Add a 'drop table' before each create.
  --add-locks         Add locks around insert statements.
  --allow-keywords    Allow creation of column names that are keywords.
                      Directory where character sets are.
  -i, --comments      Write additional information.
  --compatible=name   Change the dump to be compatible with a given mode. By
                      default tables are dumped in a format optimized for
                      MySQL. Legal modes are: ansi, mysql323, mysql40,
                      postgresql, oracle, mssql, db2, maxdb, no_key_options,
                      no_table_options, no_field_options. One can use several
                      modes separated by commas. Note: Requires MySQL server
                      version 4.1.0 or higher. This option is ignored with
                      earlier server versions.
  --compact           Give less verbose output (useful for debugging). Disables
                      structure comments and header/footer constructs.  Enables
                      options --skip-add-drop-table --no-set-names
                      --skip-disable-keys --skip-add-locks
  -c, --complete-insert
                      Use complete insert statements.
  -C, --compress      Use compression in server/client protocol.
  --create-options    Include all MySQL specific create options.
  -B, --databases     To dump several databases. Note the difference in usage;
                      In this case no tables are given. All name arguments are
                      regarded as databasenames. 'USE db_name;' will be
                      included in the output.
  -#, --debug[=#]     This is a non-debug version. Catch this and exit
  --debug-check       Check memory and open file usage at exit.
  --debug-info        Print some debug info at exit.
                      Set the default character set.
  --delayed-insert    Insert rows with INSERT DELAYED;
                      Delete logs on master after backup. This automatically
                      enables --master-data.
  -K, --disable-keys  '/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and
                      '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put
                      in the output.
  -E, --events        Dump events.
  -e, --extended-insert
                      Allows utilization of the new, much faster INSERT syntax.
                      Fields in the textfile are terminated by ...
                      Fields in the importfile are enclosed by ...
                      Fields in the i.file are opt. enclosed by ...
                      Fields in the i.file are escaped by ...
  -x, --first-slave   Deprecated, renamed to --lock-all-tables.
  -F, --flush-logs    Flush logs file in server before starting dump. Note that
                      if you dump many databases at once (using the option
                      --databases= or --all-databases), the logs will be
                      flushed for each database dumped. The exception is when
                      using --lock-all-tables or --master-data: in this case
                      the logs will be flushed only once, corresponding to the
                      moment all tables are locked. So if you want your dump
                      and the log flush to happen at the same exact moment you
                      should use --lock-all-tables or --master-data with
  --flush-privileges  Emit a FLUSH PRIVILEGES statement after dumping the mysql
                      database.  This option should be used any time the dump
                      contains the mysql database and any other database that
                      depends on the data in the mysql database for proper
  -f, --force         Continue even if we get an sql-error.
  -?, --help          Display this help message and exit.
  --hex-blob          Dump binary strings (BINARY, VARBINARY, BLOB) in
                      hexadecimal format.
  -h, --host=name     Connect to host.
  --ignore-table=name Do not dump the specified table. To specify more than one
                      table to ignore, use the directive multiple times, once
                      for each table.  Each table must be specified with both
                      database and table names, e.g.
  --insert-ignore     Insert rows with INSERT IGNORE.
                      Lines in the i.file are terminated by ...
  -x, --lock-all-tables
                      Locks all tables across all databases. This is achieved
                      by taking a global read lock for the duration of the
                      whole dump. Automatically turns --single-transaction and
                      --lock-tables off.
  -l, --lock-tables   Lock all tables for read.
  --log-error=name    Append warnings and errors to given file.
  --master-data[=#]   This causes the binary log position and filename to be
                      appended to the output. If equal to 1, will print it as a
                      CHANGE MASTER command; if equal to 2, that command will
                      be prefixed with a comment symbol. This option will turn
                      --lock-all-tables on, unless --single-transaction is
                      specified too (in which case a global read lock is only
                      taken a short time at the beginning of the dump - don't
                      forget to read about --single-transaction below). In all
                      cases any action on logs will happen at the exact moment
                      of the dump.Option automatically turns --lock-tables off.
  --no-autocommit     Wrap tables with autocommit/commit statements.
  -n, --no-create-db  'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;' will
                      not be put in the output. The above line will be added
                      otherwise, if --databases or --all-databases option was
  -t, --no-create-info
                      Don't write table creation info.
  -d, --no-data       No row information.
  -N, --no-set-names  Deprecated. Use --skip-set-charset instead.
  --opt               Same as --add-drop-table, --add-locks, --create-options,
                      --quick, --extended-insert, --lock-tables, --set-charset,
                      and --disable-keys. Enabled by default, disable with
  --order-by-primary  Sorts each table's rows by primary key, or first unique
                      key, if such a key exists.  Useful when dumping a MyISAM
                      table to be loaded into an InnoDB table, but will make
                      the dump itself take considerably longer.
  -p, --password[=name]
                      Password to use when connecting to server. If password is
                      not given it's solicited on the tty.
  -W, --pipe          Use named pipes to connect to server.
  -P, --port=#        Port number to use for connection.
  --protocol=name     The protocol of connection (tcp,socket,pipe,memory).
  -q, --quick         Don't buffer query, dump directly to stdout.
  -Q, --quote-names   Quote table and column names with backticks (`).
  --replace           Use REPLACE INTO instead of INSERT INTO.
  -r, --result-file=name
                      Direct output to a given file. This option should be used
                      in MSDOS, because it prevents new line '\n' from being
                      converted to '\r\n' (carriage return + line feed).
  -R, --routines      Dump stored routines (functions and procedures).
  --set-charset       Add 'SET NAMES default_character_set' to the output.
                      Enabled by default; suppress with --skip-set-charset.
  -O, --set-variable=name
                      Change the value of a variable. Please note that this
                      option is deprecated; you can set variables directly with
                      Base name of shared memory.
                      Creates a consistent snapshot by dumping all tables in a
                      single transaction. Works ONLY for tables stored in
                      storage engines which support multiversioning (currently
                      only InnoDB does); the dump is NOT guaranteed to be
                      consistent for other storage engines. While a
                      --single-transaction dump is in process, to ensure a
                      valid dump file (correct table contents and binary log
                      position), no other connection should use the following
                      statements: ALTER TABLE, DROP TABLE, RENAME TABLE,
                      TRUNCATE TABLE, as consistent snapshot is not isolated
                      from them. Option automatically turns off --lock-tables.
  --dump-date         Put a dump date to the end of the output.
  --skip-opt          Disable --opt. Disables --add-drop-table, --add-locks,
                      --create-options, --quick, --extended-insert,
                      --lock-tables, --set-charset, and --disable-keys.
  -S, --socket=name   Socket file to use for connection.
  --ssl               Enable SSL for connection (automatically enabled with
                      other flags). Disable with --skip-ssl.
  --ssl-ca=name       CA file in PEM format (check OpenSSL docs, implies
  --ssl-capath=name   CA directory (check OpenSSL docs, implies --ssl).
  --ssl-cert=name     X509 cert in PEM format (implies --ssl).
  --ssl-cipher=name   SSL cipher to use (implies --ssl).
  --ssl-key=name      X509 key in PEM format (implies --ssl).
                      Verify server's "Common Name" in its cert against
                      hostname used when connecting. This option is disabled by
  -T, --tab=name      Creates tab separated textfile for each table to given
                      path. (creates .sql and .txt files). NOTE: This only
                      works if mysqldump is run on the same machine as the
                      mysqld daemon.
  --tables            Overrides option --databases (-B).
  --triggers          Dump triggers for each dumped table
  --tz-utc            SET TIME_ZONE='+00:00' at top of dump to allow dumping of
                      TIMESTAMP data when a server has data in different time
                      zones or data is being moved between servers with
                      different time zones.
  -u, --user=name     User for login if not current user.
  -v, --verbose       Print info about the various stages.
  -V, --version       Output version information and exit.
  -w, --where=name    Dump only selected records; QUOTES mandatory!
  -X, --xml           Dump a database as well formed XML.

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- -----------------------------
all                               TRUE
all-databases                     FALSE
all-tablespaces                   FALSE
no-tablespaces                    FALSE
add-drop-database                 FALSE
add-drop-table                    TRUE
add-locks                         TRUE
allow-keywords                    FALSE
character-sets-dir                (No default value)
comments                          TRUE
compatible                        (No default value)
compact                           FALSE
complete-insert                   FALSE
compress                          FALSE
create-options                    TRUE
databases                         FALSE
debug-check                       FALSE
debug-info                        FALSE
default-character-set             utf8
delayed-insert                    FALSE
delete-master-logs                FALSE
disable-keys                      TRUE
events                            FALSE
extended-insert                   TRUE
fields-terminated-by              (No default value)
fields-enclosed-by                (No default value)
fields-optionally-enclosed-by     (No default value)
fields-escaped-by                 (No default value)
first-slave                       FALSE
flush-logs                        FALSE
flush-privileges                  FALSE
force                             FALSE
hex-blob                          FALSE
host                              (No default value)
insert-ignore                     FALSE
lines-terminated-by               (No default value)
lock-all-tables                   FALSE
lock-tables                       TRUE
log-error                         (No default value)
master-data                       0
max_allowed_packet                25165824
net_buffer_length                 1046528
no-autocommit                     FALSE
no-create-db                      FALSE
no-create-info                    FALSE
no-data                           FALSE
order-by-primary                  FALSE
port                              0
quick                             TRUE
quote-names                       TRUE
replace                           FALSE
routines                          FALSE
set-charset                       TRUE
shared-memory-base-name           (No default value)
single-transaction                FALSE
dump-date                         TRUE
socket                            (No default value)
ssl                               FALSE
ssl-ca                            (No default value)
ssl-capath                        (No default value)
ssl-cert                          (No default value)
ssl-cipher                        (No default value)
ssl-key                           (No default value)
ssl-verify-server-cert            FALSE
tab                               (No default value)
triggers                          TRUE
tz-utc                            TRUE
user                              (No default value)
verbose                           FALSE
where                             (No default value)

Example simple for linux:

/usr/bin/mysqldump -u'user' -p'password' --all-database > /home/sites/bk.sql
Example simple for windows:
D:\xampp\mysql\bin\mysqldump -u'user' -p'password' --all-database > D:\backup\bk.sql

Advanced Array function

print_r ($ array)
View the structure of the array
count ($ array)
Returns the integer value is the number of array elements
array_values ​​($ array)
Returns an array constant is the element value is the value derived from elements of the array $ array
array_keys ($ array)
Returns an array constant is the element whose value is derived from key elements of the array $ array.
array_pop ($ array)
Removes the last element of the array. The function returns the last element is removed.
array_push ($ array, $ VAL1, $ val2, ..., $ valn)
Add one or more elements at the end of the array $ array. The function returns the integer is the number of elements of the new array $ array
array_shift ($ array)
Removes the first element of the array. The function returns the first element is removed.
array_unshift ($ array, $ VAL1, $ val2, ..., $ valn)
Add one or more of the first array element in $ array. The function returns the integer is the number of elements of the new array $ array
array_flip ($ array)
Returns an array of keys and values ​​are interchangeable with the array $ array (lock and key values ​​into the value)
sort ($ array)
Sort array $ array as the value increases
array_reverse ($ array)
Reverse the position of the array elements
array_merge ($ array1, $ array2, ..., $ arrayn)
Enter two or more arrays into a single array and returns a new array
($ Array, $ number)
Get $ number random element from the array $ array and put in new film (get key value)
($ Value, $ array)
Find the element value in array $ array $ value. Returns the key of the element found.
($ Array, $ begin. $ Finish)
Extracting an element of the array $ array from location to location $ $ begin finish. The first element (index 0), the last element (index -1 or count ($ array) - 1)
array_unique ($ array)
Eliminate duplicate elements in the array and returns a new array
implode ($ str, $ array)
Transfer the values ​​of the array $ array into a string consists of elements separated by the character $ str
explode ($ delimiter, $ str)
Move a string into an array. Split the string based on $ delimiter, each team will split into a new element is
serialize ($ value)
Move string / array / object $ value to a string to save into a special database
unserialize ($ value)
Transfer special string is generated from serialize ($ value) on initial state
($ Key, $ array)
Check the key $ key exists in the array $ array or not? If the return value is true.
in_array ($ value, $ array)
$ Value Test value exists in the array $ array or not? If the return value is true.
($ Array1, $ array2)
Returns an array consists of elements of value exist in the array $ array1 but does not exist in the array $ array2
($ Array1, $ array2)
Returns an array includes the key elements exist in the array $ array1 but does not exist in the array $ array2
($ Array1, $ array2)
Returns an array includes the same elements of value between the two array $ array1 and $ array2
($ Array1, $ array2)
Returns an array includes the same elements of keys and values ​​between two array $ array1 and $ array2
($ Keys, $ values)
Create a new array with keys taken from the array $ keys and values ​​are taken from the array $ values ​​sequentially (required number of elements in two arrays must be equal)

Configs project ZendFramework

1.Create the tree directory looks like the following:

|-- application
|   |-- Bootstrap.php
|   |-- configs
|   |   `-- application.ini
|   |-- controllers
|   |   |-- ErrorController.php
|   |   `-- IndexController.php
|   |-- models
|   `-- views
|       |-- helpers
|       `-- scripts
|           |-- error
|           |   `-- error.phtml
|           `-- index
|               `-- index.phtml
|-- library
|-- public
|   |-- .htaccess
|   `-- index.php
`-- tests
|-- application
|   `-- bootstrap.php
|-- library
|   `-- bootstrap.php
`-- phpunit.xml

2.The Bootstrap
Your Bootstrap class defines what resources and components to initialize with file \application\Bootstrap.php.

The default configuration is placed in application/configs/application.ini, and contains some basic directives for setting your PHP environment, indicating the path to your bootstrap class, and the path to your action controllers.

File start project in \public\index.php.

5.Action Controllers
Your application's action controllers contain your application workflow, and do the work of mapping your requests to the appropriate models and views.
The default IndexController is as follows:

View scripts are placed in application/views/scripts/, where they are further categorized using the controller names. In the default case, we thus have the view scripts index/index.phtml
The following is what we install by default for the index/index.phtml view script:



Zend_Controller is the heart of Zend Framework's MVC system. MVC stands for » Model-View-Controller and is a design pattern targeted at separating application logic from display logic.Zend_Controller_Front implements a » Front Controller pattern, in which all requests are intercepted by the front controller and dispatched to individual Action Controllers based on the URLrequested.
Create the Filesystem Layout

*application: will the programming code of the application
- Controllers: source file contains the application processing

- Models: the files related to database handling

- View / scripts /: contains the directory. name of this folder will correspond to the Controller in the directory controllers. In each folder containing the. Phtml. Pages. Phtml is responsible for data output to the external interface

- Helpers: contains the file. Php. These files are simply expanding handler of the application, for example: handler involved that day in May in the library without ZF

- Filters: contains the file. Php. These files can also act as helpers in the directory file. But I often used to store the file has the function check condition of entry form.

*Html file containing the ZF startup (bootstrap), plus it can be a container imges, css, js ...
*Config file containing the application's configuration file

Multi layouts for Zend Framework

1. Create a directory \ templates as shown below:
2. Create index.phtml file in the folder \application\templates\admin with the following contents:

 3. Create index.phtml file in the folder \application\templates\default
with the following contents:

 4. Load layout in Admin modules: - Create function init () in
with the following contents:

 5. Load layout in Default modules. - Create function init () in
with the following contents:

19 steps to setting and configure the Zend Framework.

  • Step 1: Build system directories and files for the application 
  • Step 2: Declare the physical path to the application 
  • Step 3: Declare the application configuration in the configuration file 
  • Step 4: Declare the path to the folder containing the Zend Framework library 
  • Step 5: Go into the application layer Zend_Application 
  • Step 6: Create the class Bootstrap 
  • Step 7: Set the system error to the application 
  • Step 8: Declare path of initialization file (Bootstap.php) 
  • Step 9: Declare class Bootstrap 
  • Step 10: Declare the folder containing the application's Controller (appliction.ini) 
  • Step 11: Declare interface file name (layout.phtml) 
  • Step 12: Declare the path to the directory containing the main (layout) 
  • Step 13: Creating Zend_Application object and read the configuration file 
  • Step 14: Start the application 
  • Step 15: Create the file layout 
  • Step 16: Create IndexController 
  • Step 17: Create files for IndexController View 
  • Step 18: Build files. Htaccess 
  • Step 19: Run the application