Configuration multi modules in Zend Framework
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
Output:
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:
$email = new Zend_Form_Element_Text('email', array(
'value' => '',
'required' => true,
'filter' => 'stringTrim',
'label' => 'Email:',
));
$email->addValidator('EmailAddress');
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:
'12222' is no valid hostname for email address '123;á@12222'
'12222' does not match the expected structure for a DNS hostname
'12222' appears to be a local network name but local network names are not allowed
'123;á' can not be matched against dot-atom format
'123;á' can not be matched against quoted-string format
'123;á' is no valid local part for email address '123;á@12222'
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:
$zTranslate = new Zend_Translate('csv', $langFile, $lang, array('scan' => Zend_Translate::LOCALE_DIRECTORY));
Zend_Validate_Abstract::setDefaultTranslator($zTranslate);
And I wrote in my file vi.csv following language
'%hostname%' is no valid hostname for email address '%value%';
'%hostname%' là một tên host không hợp lệ cho e-mail '%value%'
'%value%' does not match the expected structure for a DNS hostname;
'%value%' không phù hợp với cấu trúc của một tên host DNS
'%value%' appears to be a local network name but local network names are not allowed;
'%value%' dường như là một tên mạng cục bộ nhưng tên mạng nội bộ không được chấp nhận
'%localPart%' can not be matched against dot-atom format;
'%localPart%' không phù hợp với định dạng dot-atom
'%localPart%' can not be matched against quoted-string format;
'%localPart%' không phù hợp với định dạng quoted-string
'%localPart%' is no valid local part for email address '%value%';
'%localPart%' không phải là local part hợp lệ cho email '%value%'
After running the function, the resulting error is as follows:
'12222' là một tên host không hợp lệ cho e-mail '123;á@12222'
'12222' không phù hợp với cấu trúc của một tên host DNS
'12222' dường như là một tên mạng cục bộ nhưng tên mạng nội bộ không được chấp nhận
'123;á' không phù hợp với định dạng dot-atom
'123;á' không phù hợp với định dạng quoted-string
'123;á' không phải là local part hợp lệ cho email '123;á@12222'
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.
--character-sets-dir=name
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.
--default-character-set=name
Set the default character set.
--delayed-insert Insert rows with INSERT DELAYED;
--delete-master-logs
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-terminated-by=name
Fields in the textfile are terminated by ...
--fields-enclosed-by=name
Fields in the importfile are enclosed by ...
--fields-optionally-enclosed-by=name
Fields in the i.file are opt. enclosed by ...
--fields-escaped-by=name
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-logs
--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
restore.
-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.
--ignore-table=database.table
--insert-ignore Insert rows with INSERT IGNORE.
--lines-terminated-by=name
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.
--max_allowed_packet=#
--net_buffer_length=#
--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
given.}.
-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
--skip-opt.
--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
--variable-name=value.
--shared-memory-base-name=name
Base name of shared memory.
--single-transaction
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).
--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).
--ssl-verify-server-cert
Verify server's "Common Name" in its cert against
hostname used when connecting. This option is disabled by
default.
-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
No.
|
Function
|
Defined
|
1
|
print_r ($
array)
|
View
the structure of the array
|
2
|
count ($
array)
|
Returns
the integer value is the number of array elements
|
3
|
array_values ($
array)
|
Returns
an array constant is the element value is the value derived
from elements of the array $ array
|
4
|
array_keys ($
array)
|
Returns
an array constant is the element whose value is derived from key elements
of the array $ array.
|
5
|
array_pop ($
array)
|
Removes the
last element of the array. The function returns the last
element is removed.
|
6
|
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
|
7
|
array_shift ($
array)
|
Removes
the first element of the array. The function returns
the first element is removed.
|
8
|
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
|
9
|
array_flip ($
array)
|
Returns
an array of keys and values are interchangeable with the array $ array
(lock and key values into the value)
|
10
|
sort ($
array)
|
Sort
array $ array as the value increases
|
11
|
array_reverse ($
array)
|
Reverse
the position of the array elements
|
12
|
array_merge ($
array1, $ array2, ..., $ arrayn)
|
Enter
two or more arrays into a single array and returns a new array
|
13
|
array_rand
($
Array, $ number)
|
Get
$ number random element from the array $ array and put in new film (get key
value)
|
14
|
array_search
($
Value, $ array)
|
Find
the element value in array $ array $ value. Returns the key of the
element found.
|
15
|
array_slice
($
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)
|
16
|
array_unique ($
array)
|
Eliminate
duplicate elements in the array and returns a new array
|
17
|
implode ($
str, $ array)
|
Transfer
the values of the array $ array into a string consists of elements
separated by the character $ str
|
18
|
explode ($
delimiter, $ str)
|
Move
a string into an array. Split the string based on $ delimiter, each team
will split into a new element is
|
19
|
serialize ($
value)
|
Move
string / array / object $ value to a string to save into a special database
|
20
|
unserialize ($
value)
|
Transfer
special string is generated from serialize ($ value) on
initial state
|
21
|
array_key_exists
($
Key, $ array)
|
Check
the key $ key exists in the array $ array or not? If
the return value is true.
|
22
|
in_array ($
value, $ array)
|
$
Value Test value exists in
the array $ array or not? If the return value is true.
|
23
|
array_diff
($
Array1, $ array2)
|
Returns
an array consists of elements of value exist in the array $
array1 but does not exist in the array $ array2
|
24
|
array_diff_assoc
($
Array1, $ array2)
|
Returns
an array includes the key elements exist in the array $
array1 but does not exist in the array $ array2
|
25
|
array_intersect
($
Array1, $ array2)
|
Returns
an array includes the same elements of value between the two
array $ array1 and $ array2
|
26
|
array_intersect_assoc
($
Array1, $ array2)
|
Returns
an array includes the same elements of keys and values between
two array $ array1 and $ array2
|
27
|
array_combine
($
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.
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
3.Configuration
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.
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
4.Index.php
File start project in \public\index.php.
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
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:
<?php
//application/controllers/IndexController.php
class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
}
}
6.Views
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:
<style>
a:link,
a:visited
{
color: #0398CA;
}
span#zf-name
{
color: #91BE3F;
}
div#welcome
{
color: #FFFFFF;
background-image: url(http://framework.zend.com/images/bkg_header.jpg);
width: 600px;
height: 400px;
border: 2px solid #444444;
overflow: hidden;
text-align: center;
}
div#more-information
{
background-image: url(http://framework.zend.com/images/bkg_body-bottom.gif);
height: 100%;
}
</style>
<div id="welcome">
<h1>Welcome to the <span id="zf-name">Zend Framework!</span></h1>
<h3>This is your project's main page</h3>
<div id="more-information">
<p><img src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" /></p>
<p>
Helpful Links: <br />
<a href="http://framework.zend.com/">Zend Framework Website</a> |
<a href="http://framework.zend.com/manual/en/">Zend Framework Manual</a>
</p>
</div>
</div>
7.Output
|-- 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.
3.Configuration
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.
4.Index.php
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:
6.Views
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:
7.Output
Subscribe to:
Posts (Atom)