前天帮公司做oDesk的PHP测试,才发现原来基础这么重要,很多很简单的题都需要查资料才知道答案,于是决定重温下PHP知识.
一、数据类型
php有以下几个数据类型:
1.Integer整型
就是各种整型数字,$a = 15;$b = 27;$c = 0x24;等
2.Float浮点型
各种小数类型的数据,$a = 0.125;$b = 17.0E - 3;等
3.String字符串型
各种字符串数据,$a = "hello";
输入长一点的字符串可以这样
$foo = <<<EOD This is a "multiline" string assigned using the 'heredoc' syntax. EOD;
4.Array数组类型
php中最重要的数据类型就是数组,其结构也可以千变万化.定义一个数组:
$array = array( '0' => array( 'name' => 'David', 'nickname' => 'kingheaven' ), '1' => array( 'name' => 'Shieh', 'nickname' => 'kingheaven' ) );
这里定义了一个2维数组,使用里面的数据的话,可以这样:<?php echo $array['0']['name']; ?>
5.Boolen布尔型
只有2个可选值,true和false
6.Null类型
不存在用Null来表示(Null不区分大小写)
7.Class对象类型
用一个例子来表示
class test { var $str = "Hello World"; function init($str) { $this->str = $str; } }
引用这个类里面的值用以下代码:
$class = new test;echo $class->str;
二、数据类型的转换
使用(int),(float),(string),(array)等将数据转换成相应类型,比如:
$a = (int)"123";$b = 123;$c = (string)$b;
三、面向对象基础
1.使用new来初始化对象:
class test { function __construct() { echo "hello"; } } $a = new test;
2.使用extends来继承类
class a { function __construct() { echo "hello"; } } class b extends a { function __construct() { echo "hello again"; } } $b = new b;
3.使用__autoload()来自动加载对象
function __autoload($class_name) { require_once $class_name . '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2();
这个例子中,$obj和$obj2会自动从MyClass1.php和MyClass2.php中去查找MyClass1和MyClass2类,如果出错,会抛出异常.
4.__construct()构造函数和__destruct()析构函数
和所有面向对象语言中的构造函数和析构函数一样,在类初始化和销毁的时候自动运行,只有一点需要注意,这个2个函数都没有返回值,而且不能尝试去抛出异常
5.访问控制public,protected和private
规则如下, 由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问.需要注意的是,如果未指定访问控制,则默认为public.
6.范围解析操作符::
要操作不在一个类内的函数或者变量,可以使用::来解析
<?php class MyClass { const CONST_VALUE = 'A constant value'; } echo MyClass::CONST_VALUE; ?>
在类的外面使用类名加::来表示调用这个类中的变量或者方法.如果想在类中调用父类的方法呢,可以这样
class MyClass { protected function myFunc() { echo "MyClass::myFunc()\n"; } } class OtherClass extends MyClass { // 覆盖父类中的方法 public function myFunc() { // 但仍然可以调用已被覆盖的方法 parent::myFunc(); echo "OtherClass::myFunc()\n"; } }
使用parent表示要使用父类的方法或者变量.要调用本类中的方法或者变量,可以用self::或者$this->.