php advanced
eclipse pdt环境:
- Open Eclipse and go to Help-> Software Updates-> Find and Install
- Select "Search for new features to install" and click "Next"
- Create a New Remote Site with the following details:
- Name: PDT
- URL: http://downloads.zend.com/pdt
- Check the PDT box and click "Next" to start the installation
确定变量类型
因为 PHP 会判断变量类型并在需要时进行转换(通常情况下),因此在某一时刻给定的变量是何种类型并不明显。PHP 包括几个函数可以判断变量的类型,例如:gettype(),is_array(),is_float(),is_int(),is_object() 和 is_string()。参见类型一章。
require() 如果文件错误,不会运行(只执行一次)
include() 如果文件错误,显示错误信息后继续运行()
thinkphp框架:
分为 系统结构目录 和 项目结构目录。
项目结构目录可如下搭建:index.php文件(先与ThinkPhp整个文件架并行):
<?php
define('THINK_PATH','./ThinkPhp/');
define('APP_PATH','./home/');
define('APP_NAME','home');
require_once THINK_PATH.'ThinkPHP.php' ;
App::run();
?>
运行调试时保留空白:
define('TRIP_RUMTIME_SPACE' , false);
不缓存相关的加载项:
define('NOCACHE_RUMTIME' , true);
~app.php 项目配置文件等,
~runtime.php 加载项
php oop思想:
<?php
class Something {
var $x;
function setX($v) {
// 方法开始为小写单词,然后使用大写字母来分隔单词,例如getValueOfArea()
$this->x=$v;
}
function getX() {
return $this->x;
}
}
?>
abstract抽象(跟java一样)
继承(跟java一样)
接口,是php5才有的(跟java一样)
基类名::方法名称
子类不不能自动调用基类的构造函数(这跟java有大区别),如果子类没有定义构造函数,才会自动调用父类的构造函数;子类使用parent::construct()调用父类构造函数
构造函数__construct() 与析构函数__destruct()
__set()、__get()方法
检查属性方法:__isset() (删除指定的变量:unset())
删除属性方法:__unset() (测定是否被设定:isset())
__toString()使用clone关键字克隆对象,__clone() php5新有的。
function __clone()
{
//$this是指副本,$that是指原本
$this->name = "" ;
}
$p1 = new Person();
$p2 = clone $p1;
__call处理调用错误(如没此方法时就自动调用);
默认是public ,,,这与java不同。,。,
类中常用关键字:
final(跟java一样)
self :直接访问当前类的成员(属性或方法) self::
static(跟java一样) 用 类名::静态成员 或 self::静态成员 访问
const : 常量不使用$符号,用 类名::静态成员 访问
串行化对象:
serialize()
unserialize()
__sleep()串行化前运行
__wakeup()反串行化时运行
自动加载类:__autoload( .. )
php try catch用法基本与其它类型相同
- < ?php
- try {
- $mgr = new CommandManager();
- $cmd = $mgr->getCommandObject("realcommand");
- $cmd->execute();
- } catch (Exception $e) {
- print $e->getMessage();
- exit();
- }
- ?>
php只有try...catch这个语法, 没有任何实质功能, 在大型项目中使用的话没有任何保障, 注定永远用于逻辑简单的小项目(并发很高的, 也可能是小项目, 项目大小与并发数无关, facebook和腾迅使用php也只是简单的前端显示, 不可能做逻辑复杂的大型后台运算之类的)