1、在linux下使用php的方式:
vi test
编辑test的内容
<?php
echo "hello world";
?>
保存后运行 php test
即得到hello world字符串。这种形式使用只合适学习php的语法,php在网络方面的功能就发挥不出来了。
2、php和javascript一样是弱类型语言。其赋值形式为
$money = 1000.89;
php支持Integer,String,Float,Boolean,Array和Object.
3、php获取表单数据的方式:
$tireqty
$_POST['tireqty']
$HTTP_POST_VARS['tireqty']
4、可变变量。工作原理就是用一个变量的值作为另一个变量的名称,如:
$varname = 'tireqty';
$$varname = 5; (此时相当于给tireqty变量赋值5)
5、声明常量:
define('TIREQTY', 10);建议使用大写字母
6、变量的作用域:
7、引用
赋值操作时,先产生一个原变量的一个副本,然后再将它保存在内存的其他地方
$a = 5;$b = $a;$a = 7;
经过这样操作后,$b的值依然为7不会发生改变。
如果使用引用操作符&
$b = &$a; $a = 7;
那么$b也就同时等于7。因为$a和$b都指向了相同的内存地址。
8、错误抑制操作符
错误抑制操作符@可以在任何表达式前面使用,即任何有值的或者可以计算出值的表达式之前
如:$a = @(57/0);
如果没有@操作符,这一行代码将产生一个除0警告,使用这个操作符,这个警告就会被抑制住。
9、执行操作符
执行操作符是一对操作符,它是一对反向单引号(``)。php将试着将反向单引号之间的命令当做
服务器端的命令来执行。表达式的值就是命令的执行结果。如:
$out = `ls -al`;
echo $out;
10、结束一个循环或者程序
支持break、continue和exit,exit会跳出整个脚本程序。
11、php对文件的操作和c语言中的文件操作是一样的。
12、php中对数组是可以随意增长的,这点和javascript一样。
arry[i] = value的方式就可以将数组的size加1
初始化方式1: $products = array("Tires","Oil","Spark");
2:products[0]="Tires",products[1]="Oil",products[2]="Spark";
13、数组的循环
可以使用for循环,也可以使用foreach
foreach($products as $current)
echo $current.' ';
foreach是专门为数组而设计的。
14、相关数组(相当于hashmap)
$prices = array('Tiers'=>100, 'Oil'=>10, 'Spark'=>4);以产品作为关键字,以价格作为
值的相关数组。
读取方法:
foreach($prices as $key=>$value)
echo $key.'=>'.$value;
while($element = each($prices))
{
echo $element['key'];
echo '=>';
echo $element['value'];
}
while(list($product,$price) = each($prices))
echo "$product=>$price";
15、数组排序
sort、asort和ksort。asort是按照相关数组的value进行排序,而ksort是按照key进行排序。
以上是按照升序进行排序的,如果需要按照降序进行排序那么为rsort,arsort和krsort。也可以
自定义排序,如多维数组,使用usort($products,compair),compair是一个函数,需要用户自定义。
16、file函数返回一个数组,文件中的每一行是数组的一个元素
$orders = file("orders.txt");
17、explode函数用于处理字符串的分隔符
$line = explode("\t", $orders[i]);返回的line就是一个数组,这个功能类似于Java的
StringTokenizer类的功能。
18、统计数组元素个数:count、sizeof和array_count_values,其中最后一个是返回一个相关函数
key为数组元素,value为这个数组元素出现的次数。
19、require和include函数,用于加载文件,如果此文件是.php文件则执行,如果不是则当成
普通文件加载进来。如果里面包含<?php command ?>也会执行。
这两个函数的区别只是如果加载失败require会报错,而include只是会警告
20、php的错误提示:通常,php给出的错误信息是非常有用的。它可以告诉你错误出现在哪个文件
中,错误在文件的哪一行等。
21、如果希望值发生改变,就采用引用传递参数
function increment(&$value, $amount =1)
{
$value = $value + $amount;
}
使用:
$a = 10;
echo $a.'<br />';
increment($a);
echo $a.'<br />';
当然如果不采用引用传递还希望$a发生改变可以将其变成全局变量。
22、php5引入了全新的、功能更为强大的面向对象实现,它使得类和对象更用用。
23、class的定义
class classname
{
//方法和属性的引用采用“->”方式
$attribute;
function _construct($param)
{
$this->attribute = $param; //注意和java不同,这里this前面是有一个$符的
echo "Hello";
}
function _destruct() //可选
{
}
}
24、控制访问符:public是默认属性,这里与Java不一样。
25、parent关键字允许调用父类操作的方法,如要从类B中调用父类A的操作A::operation,可以
使用parent::operation()。但是如果operation中的操作属性被重载了,还是会使用B中的属性值
26、final关键字用于类和函数,同Java一样,防止继承和重载的。php同样是只能继承一个父类,但是
可以实现多个接口。继承的关键词是extends,实现的关键字是implements.
27、php4之前的对象是按照值传递的,而php5是按照引用传递的,这点和Java一样了。
28、使用Per-class常量
class Math {
const pi = 3.14159;
}
使用: echo Math::pi;
29、静态方法:使用static关键字,同Java。调用时用Math::operation();
30、php5提供instanceof关键字
($b instanceof B) 返回true
($b instanceof A) 返回true
31、php5引入clone关键字,允许复制一个已有的对象
$c = clone $b; 同Java的clone意义,但是用法不同。
clone后c具有同b一样的属性,如果要改变默认的clone方式,需要在类中写一个_clone方法
32、php5提供abstract关键字,意义同java。
33、php5习惯利用_call实现方法的重载(注意重载是指方法名相同而参数不同,overload,而override
是子类覆盖父类的方法)。因为php使用灵活的类型和(容易实现的)可选的函数参数
如:
public function _call($method,$p)
{
if($method == 'display')
if(is_object($p[0]))
$this->displayobject($p[0]);
elseif(is_array($p[0]))
$this->displayArray($p[0]);
else
$this->displayScalar($p[0]);
}
_call()方法必须带有两个参数,一个包含被调用的方法名称,第二个参数包含传递给
该方法的参数数组。使用:
$ov = new overload;
$ov->display(array(1,2,3)); //调用displayArray函数
$ov->display('cat'); //调用displayScalar函数
34、php5有_toString(),同Java,如果实现则可以自定义打印类实例对象。php5提供了Reflection
API。异常处理是php5中的一个重要特性。