为什么需要设置php.ini的位置?
php默认情况下是可以使用,但又很多功能不能用——需要去php.ini中打开(或配置)。
此时apache就得“知道”php.ini的位置,所以在apache的配置文件(httpd.conf)中设置它:
PHPIniDir “php.ini所在的文件夹位置”
这样,apache启动并把PHP语言引擎当作apache的一个模块调用的时候,就可以同时装置该php.ini
php基本环境
运行环境
保证能够运行php:
测试:echo “abc”;
保证时区设置正确:
测试:echo date(“Y-m-d H:i:s”);
保证模块设置正确:
测试:mysql_connect(“localhost”, ‘root’, ‘123’);
语法环境
有多种嵌入到html代码中的php代码形式:
1,标准形式
<?php
.....这里是php代码
?>
2,标准形式
<script language=”php”>
....这里是php代码
</script>
3,短标签形式——不推荐
<?
.....这里是php代码
?>
此形式依赖于php.ini中的一项设置:
short_open_tag = On
· 结束标记有时可以省略
当一个php文件中的php代码部分的后面不再有其他非php代码(通常就是html),则此时php代码区的最后的结束标记可以省略:
基本语法形式:
区分大小写
· 主要是指变量名区分大小写
· 常量通常也区分,但常量也可以自己设定为不区分(不推荐)
· 但函数名不区分
· 而系统中使用的关键字也不区分大小写,比如if, else, for
语句结束符,用分号
· 一个php标记块中的最后一个分号可省略
· php结束标记省略则不能省略最后一个分号
不建议省略!
变量
基本含义
变量是包含了一个名称和一个值的“标识符”。
在php中,变量应该这样去理解:
当我们在代码中使用$v1这个变量名,就是指使用“1”这个数据值。
比如:echo $v1; //输出1
当我们在代码中对$v1这个变量进行一定的“运算”,也就是对这个数据1进行运算:
比如:$v1++; //就是将1的值自加1,即结果数据变成了2
· 形式:变量必须以$开头,后面紧跟变量名
注意:通常,在“能够出现”变量的语法中,只要出现$符号,并在其后出现紧挨着的字符,就会被识别为一个变量,即使不存在该变量,比如:
echo “人民币符合¥像个羊,美元符号$象个钱”; //这里就会有问题!
命名规则
通常命名包括变量名,函数名,常量名,类名,接口名,等等。。。。
这里介绍的命名规则,是相对通用的,有个别地方或许有一些细节出入,通常尽量不涉及不常见情形。
基本规则:
1,只能使用大小写字母,下划线(_),数字
2,数字不能开头
3,不能跟所在环境(系统)的关键字重名(比如if, for, function.....
行业规则(潜规则):
基本规则,保证的是语法的正确性。
行业规则,保证的是是否能得到别人的尊重!
行业规则中,有如下几种常用的命名规则:
1,驼峰命名法:
示例:name, myName, myFatherName
2,帕斯卡命名法:
示例:Name, MyName, MyFatherName
3,下划线间隔法:
示例:name, my_ame, my_father_name
变量间的传值方式
总体说明:
1,这里讨论的传值方式是指:一个变量对另一个变量
2,它不仅仅适用于赋值语句,也适用于其他有同样含义的语句,比如:函数的实参到形参
3,传值方式只有2种:值传递,引用传递
4,php中,所有变量,默认都是值传递。
5,要想使用引用传递,必须使用引用传递的符号: &
值传递
是指将一个变量的数据值(数据内容)拷贝一份,然后赋值给另一个变量。
复制完之后,这两个变量就没有关系了(互相独立)!
引用传值:
是指将一个变量的引用关系拷贝一份,然后赋值给另一个变量,即另一个变量也同样由该关系决定了指向某个数据:
赋值(传值)完之后,两个变量指向同样一个数据。
可变变量
所谓可变变量,就是一个变量的名,又是一个变量。
可变变量的语法是php的很特殊的语法——其他语言中少见。
怎么理解:
1,凡是$符号出现,就会有可能理解为是一个变量
2,这里第一个“$”出现了,则php就视图将其解释为一个变量,变量名是$v1;
3,我们有知道,$v1的值是”abc”,
4,那么,第一个“$”符号后面的变量名,就得到为“abc”
5,即:echo 试图输出的是变量$abc, 自然是数字10
实际上,理论上,可变变量的嵌套还可以更多,比如:$$$def;
预定义变量
综述:
1:预定义变量又叫超全局变量,包括:
$_GET, $_POST, $_SERVER, $_REQUEST, $GLOBALS, $_COOKIE, $_SESSION, ..........(大约10个)
2:作用域问题
php中,自定义的变量的作用域,分两种:全局作用域(函数外),局部作用域(函数内)。
但:
预定义变量的作用域称为“超全局作用域”:全局作用域 + 局部作用域的总和(函数内外全都可用)
3:数据类型问题:
超全局变量都是数组!
$_GET变量(数组):
get这个词,常常出现在这里:
这叫做“表单以get方式提交数据”
则$_GET这个预定义数组变量,就是指以这种方式提交的所有数据的集合(数组)
对应来说,也可以以post方式提交数据
注意:get这个词,似乎没有中文翻译。
实际上,在网页中,以get方式提交数据有多种形式:
形式一:
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
形式二:
本质是将get数据通过直接url的方式提交
其作用是:用户点击链接后,会将数据发送(提交)给页面3_register.php,其实也可以理解为“打开”该网页(3_register.php),还可以理解为“请求”该网页(3_register.php),这种请求也是get请求
形式三:
通过JavaScript提交
其作用是:当该行语句执行的时候(通常其实是在函数中),会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
形式四:
其作用是:当该行语句执行的时候(通常其实是在函数中),会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
不管哪种形式的get提交过来的数据,获取数据是一样的:
$_POST变量(数组)
类似$_GET变量(数组),$_POST代表页面通过post方式提交过来的数据所形成的数组。
post提交数据,通常只有一种形式:
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
接收post数据的形式为:
(在abc.php网页中)
通常,网页中的form表单,一般都用post方式,get方式主要体现在其他3种形式。
小案例:
设计一个页面,可以对2个数据进行基本算术运算(+-*/),使用post方式
对于表单数据的处理,要记住一个口诀,皆有名字
意思就是,无论是什么类型的表单,最终取值都是通过名字来取值的
$_REQUEST变量(数组)
$_REQUEST数组,其实并不是一个独立的数据来源,而是$_POST数据和$_GET数据的“总和”
即$_REQUEST数组中包括了所有$_POST数据和$_GET数据——其实是由系统内部自动存储的。
通常,$_POST数据和$_GET数据不会“同时出现”,$_REQUEST数组就代表了其中之一。
则他们接收数据都一样:
下面来看看:get和post数据同时提交的情形:
此时,一般就只有一种html语法形式会出现该情形,如下:
则此时,uName和uPswd两个数据以post方式提交给abc.php,
并,同时:a=5和b=10两个数据,以get方式提交给abc.php
则在页面abc.php中:
这样取得get数据:
$v1 = $_GET[‘a’];
$v2 = $_GET[‘b’];
这样取得post数据:
$v3 = $_POST[‘uName’];
$v4 = $_POST[‘uPswd’];
但,也可以这样取(全有了):
$v1 = $_REQUEST[‘a’];
$v2 = $_REQUEST[‘b’];
$v3 = $_REQUEST[‘uName’]
$v4 = $_REQUEST[‘uPswd’]
当get数据和post数据同时提交并其中有重名的时候,情况怎么样呢?
说明:
1,尽量避免重名;
2,如果重名了,此时$_REQUEST只会记录(存储)其中一个数据(要么post数据,要么get数据)
3,至于记录的是哪个,是有php.ini中的一个设置项来决定:
3.1 request_order = “GP”; //这是默认值,G代表GET,P代表POST
3.2 含义是:先存储GET数据,再存储POST
3.3 可见如果重名,此时POST就会覆盖GET数据
3.4 改为:request_order = “PG”, 顺序反过来
结果为:
然后去php.ini中,修改为:request_order = “PG”
同样的数据,结果却为:
· $_GET, $_POST, $_REQUEST三种数据是相互独立的。
$_SERVER变量(数组)
该变量存储了服务器端或客户端的一些请求信息或设置信息,比较多,而且不同的服务器和不同的请求页面,其数据项都可能不同。
常用的有:
$GLOBALS变量(数组)
似乎是一个多余的变量:它只是把我们自己定义的所有全局变量存储到该数组中:
变量名就是该数组的下标(键名),变量值就是对应的值。
常量
含义:用于存储一个不会变化也不希望变化的数据的标示符。
常量命名规则,同变量,但习惯说,常常将常量的名称使用“全大写”形式。
定义形式
使用常量:
两种形式:
直接使用名字
或使用constant()函数:constant(“常量名”)
预定义常量:
php语言中,预定了大量的常量,可以直接使用。
其中有些常量,是需要某些模块打开之后才有(比如mysql模块)
魔术常量
魔术常量其实是一种值会随着一定的条件(环境)而变化的常量,形式和使用上是常量,但实际上,其值会改变。