标签归档:PHP

PHP 5.5.15安装intl模块

给PHP环境安装intl模块需要安装 icu4c。

intl模块安装

安装icu4c在本地环境。

wget http://download.icu-project.org/files/icu4c/53.1/icu4c-53_1-src.tgz
tar -xzf icu4c-53_1-src.tgz
cd icu/source
./configure –prefix=/usr/local/icu
make
make install

从Pecl下载intl模块

wget http://pecl.php.net/get/intl-3.0.0.tgz
tar -xzf intl-3.0.0.tgz
cd intl-3.0.0

/usr/local/php/bin/phpize
./configure –enable-intl –with-icu-dir=/usr/local/icu/ –with-php-config=/usr/local/php/bin/php-config
make
make install

配置php.ini启用intl模块

sed -i ‘s#; extension_dir = \”\.\/\”#extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/”#’ /etc/php.ini
echo “;extension=intl.so” >> /etc/php.ini

Symfony2学习笔记之数据库操作

数据库和Doctrine
让我们来面对这个对于任何应用程序来说最为普遍最具挑战性的任务,从数据库中读取和持久化数据信息。幸运的是,Symfony和Doctrine进行了集成,Doctrine类库全部目标就是给你一个强大的工具,让你的工作更加容易。

Doctrine是完全解耦与Symfony的,所以并不一定要使用它。

一个简单例子:一个产品,我们首先来配置数据库,创建一个Product对象,持久化它到数据库并把它读回来。

首先我们需要创建一个bundle:

$php app/console generate:bundle --namespace=Acme/StoreBundle

配置数据库
在开始之前,首先需要配置数据库连接信息。根据惯例,这些信息通常会配置在app/config/parameters.ini 文件中。

;app/config/parameters.ini
[parameters]
    database_driver   = pdo_mysql
    database_host     = localhost
    database_name     = test_project
    database_user     = root
    database_password = password

将配置信息定义到parameters.ini文件中也是一个常用的做法。定义在该文件中的配置信息将会被主配置文件在安装Doctrine时引用。

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%

通过把数据库信息分离到一个特定的文件中,你可以很容易的为每个服务器保存不同的版本。现在Doctrine知道你的数据库配置了,你可以用它来创建一个数据库了。

$php app/console doctrine:database:create

创建一个实体类:
假设你创建一个应用程序,其中有些产品需要展示。即时不考虑Doctrine或者数据库,你也应该知道你需要一个Product对象来表现这些产品。在你的AcmeStoreBundle的Entity目录下创建一个类。

// src/Acme/StoreBundle/Entity/Product.php
namespace Acme\StoreBundle\Entity;

class Product
{
    protected $name;

    protected $price;

    protected $description;
}

这样的类经常被称为“Entity”,意味着一个基础类保存数据。它们简单来满足你应用程序的业务需要。不过现在它还不能被保存到数据库中,因为现在它只不过还是个简单的PHP类。一旦你学习了Doctrine背后的概念,你可以让Doctrine来为你创建实体类。

$php app/console doctrine:generate:entity --entity="AcmeStoreBundle:Product" --fields="name:string(255)
read more

Symfony2 学习笔记之模板使用

我们知道,controller负责处理每一个进入Symfony2应用程序的请求。实际上,controller把大部分的繁重工作都委托给了其它地方,以使代码能够被测试和重用。当一个controller需要生成HTML,CSS或者其他内容时,它把这些工作给了一个模板化引擎。

模板:
一个模板仅仅是一个文本文件,它能生成任意的文本格式(HTML,XML,CSV,LaTex…)。最著名的模板类型就是PHP模板了,可以被PHP解析的文本文件,它混合了文本和PHP代码。
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Symfony!</title>
</head>
<body>
<h1><?php echo $page_title ?></h1>

<ul id=”navigation”>
<?php foreach ($navigation read more

Symfony2 学习笔记之控制器

一个controller是你创建的一个PHP函数,它接收HTTP请求(request)并创建和返回一个HTTP回复(Response)。回复对象(Response)可以是一个HTML页面,一个XML文档,一个序列化的JSON数组,一个图片,一个重定向,一个404错误或者任何你想要的内容。controller中可以包含任何渲染你页面内容的所需要的逻辑。

下面是一个controller最简单的例子,仅仅打印一个Hello world!

use Symfony\Component\HttpFoundation\Response;

read more

Symfony2 学习笔记之系统路由

漂亮的URL绝对是一个严肃的web应用程序必须做到的,这种方式使index.php?article_id=57这类的丑陋URL被隐藏,由更受欢迎的像 /read/intro-to-symfony 来替代。

拥有灵活性更为重要,如果你要改变一个页面的URL,比如从/blog 到 /new 怎么办?
有多少链接需要你找出来并更新呢? 如果你使用Symfony的router,这种改变将变得很简单。

Symfony2 router让你定义更具创造力的URL,你可以map你的应用程序的不同区域。
创建复杂的路由并map到controllers并可以在模板和controllers内部生成URLs
从bundles(或者其他任何地方)加载路由资源
调试你的路由

路由活动
一个路径是一个从URL 模式到一个controller的绑定。
比如假设你想匹配任何像 read more

Symfony2 学习笔记之服务容器

现在的PHP应用程序都是面向对象开发,所以主要是由对象构成。有的对象可以方便的分发邮件信息而有的可能帮你把信息写入到数据库中。在你的应用程序中,你可能创建一个对象用于管理你的产品库存,或者另外一个对象处理来自第三方API的数据。重要的是现在应用程序要做的这些事情都是被组织到许许多多的对象中来处理它的每一项任务的。

我们将套路一下Symfony2中一个特殊的PHP对象,它帮助我们实例化,组织和获取你应用程序汇总的许多对象。这个对象叫做服务容器,它可以帮助你使用标准统一的方式来创建你程序中的对象。它能简化你的繁杂的初始对象工作,并且拥有超快的执行速度,强调该框架提高了可重用性和降低了代码耦合。
read more

PHP相关的特殊符号

注解符号:
// 单行注解
/* */ 多行注解
引号的使用
’ ’ 单引号,没有任何意义,不经任何处理直接拿过来;
” “双引号,php动态处理然后输出,一般用于变量.
变量形态:
一种是True 即 真的;
另一种是False 即假的
常见变量形态:
string 字串(数字\汉字\等等)
integer 整数(1、2、3、4、5、0、-1、-2、等等)
double 浮点数(小数点)
array 数组
object 对象
可以用的方法有gettype($mix) 和settype($mix,$typename);

常用符号
\” 双引号
\\ 反斜线
\n 换行
\r 送出
\t 跳位(TAB)
运算符号
+ 加法运算 – 减法运算
* 乘法运算 / 除法运算
% 取余数 ++ 累加
— 累减1 . 把字串相加
设定运算
read more