php与mysql程序设计 读书笔记——张迅雷闪击PHP(1-6章)
2012-06-21 08:50 java环境变量 阅读(262) 评论(0) 编辑 收藏 举报第一章 PHP概述
源代码下载 apress.com
采用多种协议同意,包括LDAP IMAP POP3 NNTP DNS
访问数据库PDO MDB2
对象关系映射ORM的解决方案 Propel(http://propel.phpdb.org/trac/)
第二章 PHP概述
linux目标服务器有root权限才能完成构建过程。需要一个成熟的ANSI-C编译器和构建系统;PHP需要Flex、Bison;Apache 至少需要Perl5.003 ;如果是php6,还需要安装3.4版本的ICU(International Componets for Unicode ,Unicode国际化组件包)
linux服务器搭建步骤:
解压Apache php
1) gunzip httpd-2_X_XX.tar.gz
tar xvf httpd-2_x_xx.tar
gunzip php_XX.tar.gz
tar xvf php_xx.tar
2)配置Apache
cd httpd-2_x_xx
./configure --enable-so
make
3) install apache
make install
4)配置 构建 php
cd ../php-x_xx
./configure -with-apxs2=APACHE_INSTALL_DIR/bin/apxs
make
make install
5) 配置php
cp php.ini-recommended /usr/local/lib/php.ini
6)打开apache的配置文件
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
/usr/local/apache2/bin/apachect1 restart
如果是windows服务器PHPIniDir “c:\php5” 加上
在linux配置php
./configure --help
./configure --with-apxs2=APACHE_INSTALL_DIR/bin/apxs --enable-ftp PHP的ftp
./configure --with-apxs2=APACHE_INSTALL_DIR/bin/apxs --enable-java=[JDK-INSTALL-DIR] php的java扩展
ini_set()函数 用php修改php.ini配置文件
第三章 PHP基础
printf按格式输出到浏览器
printf("%.2f",43.2);
而sprintf按格式输出到字符串
$const=sprintf("%.2f",43.2);
echo $const;
数据类型 标量 scalar
布尔 true false 不区分大小写 同样可以用1和0来代替;
整型;
浮点型;
字符串:是一个连续的字符序列;
对象;
资源;
——————————————————————————————————————————————
强制类型转换
(array)
(bool) (boolean)
(int)(integer)
(object)
(real) (double) (float)
(string)
——————————————————————————————————————————————
gettype() 可能有8个返回值 array boolean double integer object resource string unkonw type
settype()可以设定7种类型 返回true或者false
is_array() is_bool() is_float() is_integer() is_null() is_numeric() is_object() is_resource() is_scalar() is_string()
php变量的作用域 scope
局部变量;函数参数;全局变量;静态变量;显示声明全局变量: GLOBAL
超级全局变量:启用这9个变量数组,必须在php.ini文件中启用配置参数track_vars php4.3后总是开启的。
foreach($_SERVER as $key=>$value){
//echo $key."===".$value;
echo "$key=>$value<br/>";
}
变量的变量
$recipe="spa";
$$recipe="360qq";
echo $recipe, $spa;
echo $recipe, ${$recipe}
define()定义常量如果使用可选参数 case_insensitive=TRUE 那么后面对常量的引用将不区分大小写。
%取模就是取余数
字符串插入
双引号
$tencent='ma hua teng';
echo "china qq company is $tencent";
结果:china qq company is ma hua teng
如果单引号 将按字符串原样输出
heredoc语句注意以下三点:
a 开始和结束标示符必须相同
b 开始标示符前面必须有三个左尖括号 <<<
c heredoc与双引号界定的字符串遵循相同的解析规则。变量和转义序列都得到解析,唯一的区别是,此处的双引号不需要转义。
d 结束标识符必须在一行开始处。
适用场景: 如果需要处理大量内容,又不希望适用转义引号,此时heredoc语句尤其有用。
如果包含一个break语句,将立即结束do...while for foreach switch while循环的执行。
goto语句,php6中得到了扩展以支持标签,可以直接跳到一个循环或条件构造之外的某个特定位置。php5不支持
continue语句使当前循环迭代执行结束,并从下一次迭代开始执行
include与print echo语句一样 ,使用可以忽略括号。
只有启用allow_url_fopen这是默认的,才可以再require中使用URL
第四章 函数
默认参数值必须位于参数列表末尾或为常数表达式,而不能制定函数调用或变量等非常量值。可以指定某个参数为可选optional参数,这些参数需要放在参数列表末尾,而且要指定其默认值为空。
一个非常有用的函数
number_format() 函数通过千位分组来格式化数字。
return() 可以向函数调用者返回任意确定的值,将程序控制权返回到调用这的作用域。
第5章 数组
array_unshift() 函数在数组开头插入一个或多个元素。
被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。
该函数会返回数组中元素的个数。
in_array() 搜索数组一个特定值;
array_key_exists()在一个数组中找到一个指定的键
array_search() 一个数组中搜索一个指定的值;
array_keys() 包含所搜索数组中找到的所有键;
array_values() 包含所搜索数组中找到的所有值;
key() 函数返回当前指针所在位置的键;
current 返回数组中当前指针所在位置的数组值;
each 返回当前键值对,并将指针推进一个位置;
array_count_values() 函数用于统计数组中所有值出现的次数。
letlocale()函数设置你的本地化环境(locale)
array_reverse() 逆置数组中元素的顺序;
array_flip() 置换数组中键及相应值的角色;
sort排序破坏键值对的关联
asort保持键值对的关联
rsort
asort
natsort自然排序
natcasesort不分区大小写的自然排序
ksort按键对数组排序;
krsort 逆序即降序;
usort 根据用户自定义排序规则;例如对美国日期 m-d-y 的比较
array_slice返回数组中的一部分;
array_splice 删除并以数组的形式返回所删除的元素;
array_rand返回数组中的一个或者多个;
shuffle 随即地对数组中的元素重新排序;
array_sum 求和,如果包含字符串其它类型数据,这些值将被忽略;
array_chunk() 分解为一个多维数组
第6章 面向对象的php
耦合 couple
三特性 封装 encapsulation
继承 inherit
多态 polymorphism
well-designed 指足够抽象,从而可以重用
类 class
对象 object
php支持5种字段作用域 public private protected final static
php6中可以用var取代public
php5确实提供了对属性的某种支持,并有几种新的可能性,这事通过冲在__set __get方法来实现的,当试图引用一个类定义中不存在的成员变量时,就会调用这些方法。
getName setName 通过使用标准的命名约定封装了管理和存取任务。
在类中定义常量 constant 常量值在这些对象的整个生命周期中都保持不变
echo math_function::PI; 这样访问
php支持6种方法作用域 public private abstract protected final static
private方法只能在类内部使用,不能由实例化的对象调用,也不能由类的子类调用,如果某些方法只用作为类中其它方法的“助手”(即辅助方法),就应当标记为私有。
类的辅助函数
boolean class_exists 确定类是否存在;
string get_class 确定对象上下文,返回object所属类的类名;
get_class_methods 返回数组 了解类的方法
get_class_vars 类的字段名和值
get_declared_classed 返回一个数组,包含当前执行脚本中定义的所有类名;
get_object_vars 返回一个关联数组,包含object可以用的已经定义的字段及其相应的值,没有值的字段在关联数组中将赋值为null
get_parent_class 确认对象的父类
interface_exists 接口是否存在;
is_subclass_of确认对象的子类型
method_exists 确定方法是否存在;