http://nqdeng.github.io/7-days-nodejs/#1.3.2 node学习地址
http://codeigniter.org.cn/user_guide/toc.html CI框架学习地址
http://linux.chinaitlab.com/special/linuxcom/Index.html linux 指令学习地址
http://blog.csdn.net/xiongwjw/article/details/7333112 fiddle 教程
http://www.infoq.com/cn/interviews/qzone-front-end 前端 qq空间博客
一,PHP中的类:
创建一个person类并实例化:
class person{
private $name;
function setName($name){
$this->name = $name;
}
function getName(){
return $this->name;
}
}
var personObj = new person();
personObj->setName('july');
echo personObj->getName();
其中new 是实例化一个类,当实例化一个类时候,当定义对象有构造函数时候会默认调用,其中构造函数式 _construct():
则上面的函数可以改造为:
class person{
private $name;
function _construct($name){
$this->name = $name;
}
function getName(){
return $this->name;
}
}
var personObj = new person('july');
echo personObj->getName();
二,PHP中析构函数:
析构函数和构造函数相反,当一个对象被注销时候调用,php会在请求结束后确保所有资源都被释放,这样析构函数作用显得很微不足道。但在清空一个对象时候记录日志信息十分有用。
class person{
function _destruct()){
echo "清空这个对象时候记录日志信息";
}
}
var personObj = new person();
echo personObj = null;//此时析构函数会默认调用
三,$this解析
在对象方法执行时候 php会自动定义个$this 变量,它表示一个对象本身能够利用它访问到在本对象中定义的变量,如上面的$name变量。
四,public protect private 变量
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。
五,静态属性:
不属于类的任何实例,访问方法前面加类名来限制它如下:
<?php
class myClass{
static $mystaticVariable = 0;
}
echo myClass::$mystaticVariable;
?>
六,常量
在类中定义常量是用const进行申明,一般常理是用 大写字母,其中在类中self表示这个类本身
<?php
class myClass{
const COLOR = "red";
function showColor(){
echo self::COLOR;
}
}
echo myClass::COLOR;
var obj = new myClass();
echo obj->showColor;
?>
七,对象克隆:
class myClass{
public $value = 1;
}
$obj1 = new myClass();
$obj2 = $obj1;
$obj2->value = 1;
echo obj1->value;
这个会在php中打印出1 而在php5中打印出2,因为php4中是一个对象拷贝,这样改变$obj2不会影响$obj1,而在php5中 $obj1是一个对象句柄,那么$obj2复制到的也是一个句柄,此时改变$obj2,改变的是喝$obj1指向的同一对象。
八,面向对象中多态,继承使用
<?php
header("Content-type: text/html; charset=utf-8");
class Animal{
function makeSound(){
echo "访问错误,只能通过子类继承访问";
}
};
class dog extends Animal{
function makeSound(){
echo "狗叫";
}
};
class bird extends Animal{
function makeSound(){
echo "鸟叫";
}
};
function echoRightSound($obj){
if($obj instanceof Animal){
$obj->makeSound();
}else{
echo "输入错误的对象";
}
}
echo echoRightSound(new dog);
echo"<br>";
echo echoRightSound(new bird);
?>
如上面所示 ,dog和bird都继承与Animal都实现了父类的Animal的makeSound方法实现了多态。
九,面向对象中抽象类:
//************************面向对象中抽象类****************************//
abstract class sharp{
protected $x,$y;
function setCenter($x,$y){
$this->x = $x;
$this->y = $y;
}
abstract function draw();
}
class drawObj extends sharp
{
function draw(){
echo"<br>实例化一个抽象方法";
}
}
$obj = new drawObj();
$obj->draw();
抽象类中方法一定要在子类中进行重写,不然会报错。
十,接口:
任何一个implements 接口类的对象,将自动获得这个接口定义的常量。接口类的所有方法都是默认 abstract
//*****************定义接口*****************//
interface logable(){
function logString();
}
class Person implements logable{
function logString(){
echo "重写接口中定义的方法";
}
}
接口同时也满足继承 如: interface I1 extends I2 I3 ......{}
final 定义的方法表示继承类不能进行重写,同时也可以用final定义一个类,表示不允许其他类继承此类。