PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用

 自从1994年PHP语言的创建,神奇般的被追捧为网站设计的首选语言。2000年PHP4.0的发布无疑为其注入新鲜的生命血液,更因其开源的胸怀受人尊敬。编程语言的学习入门无非是学习语法和基础的应用实例。这段时间我会一点一点地记录PHP的过程,一来是对自己的总结,二来为后续遇到同样问题的学习者解惑。

  笔记记录主要通过问题的方式出现,不会像书本上课似的,一点一点地探求语言的基础。主要是在PHP学习的基础阶段预见到问题一一解决记录,记录从不懂出去的过程。好了真正的PHP语言正是开始。

  1、PHP需要什么样的开发环境,开发工具?

  关于PHP语言的版本问题,了解是必须的,但我以为没太大的关系,百度/google就可以找到这些开发的版本问题。工欲善其事,必选利其器!首先第一次就是配置开发环境,我初次接触的开发环境是windows,但是这次我愿意在linux上进行后续的学习。现在我将两种开发环境的部署都会展示一次。

  2、windows安装步骤怎样?需要注意哪些方面?  

首先是windows,一般为了方便在windows 上都会选择安装工具套件实现,在这里我使用的是WampServer开发,Wamp就是Windows Apache Mysql PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。简单的一键安装部署服务器,数据库等等不用考虑太多。直接下一步下一步就可以进行下去。不过安装过程中请注意有以下几点:

1.WampServer程序所在路径不能含有汉字和空格。

2.MySQL默认用户名:root,密码为空

3.MySQL数据库文件存放目录:wampbinmysqlmysql5.5.8data

4.网站根目录[HTML,PHP]wampwww

5.访问本机请用http://127.0.0.1/ (如果80端口未被占用)

6.非默认端口,网址为http://127.0.0.1:端口/

如果安装了IIS服务器,端口80是被默认占用的,需要改wamp服务上网端口号码:C:wampbinapacheApache2.2.17conf文件夹下有文件httpd.conf的Listen节点,修改端口号80,或者你所需要的。修改后重启所有服务,运行即可。

开发工具:PHP开发工具:Zend Stodio ,PHPedit , EditPlus 2 ,easyeclipse ,DW 等都可以完成。继承的开发工具选择Zend比较好用。

  3、linux环境下也是安装包部署环境的吗?是否有图形管理界面? 

 然而在linux上我们依旧可以做开发PHP,这里我选择的开发环境是LAMP(linux+Apache+Mysql+PHP),以Ubuntu发行版本为例子安装开发环境。Apache官网卡可以下载离线安装包,亦可以在线安装。这里选择在线安装比较方便。首先使用Ubuntu系统,进入窗口命令(Ctrl+Alt+t)

    Apache的安装

Apache作为一个功能强大的Web程序,自然是架建Web服务器的首选,好了,下面我们就来安装Apache。在终端下输入下在面命令:
sudo apt-get install apache2
安装完毕后,接下来就要启动Apache了
sudo /etc/init.d/apache2 restart
在浏览器里输入http://localhost或者是http://127.0.0.1,如果看到了“It works!“,那就说明Apache就成功的安装了,Apache的默认安装,会在/var下建立一个名为www的目录,这个就是Web目录了,所有要能过浏览器访问的Web文件都要放到这个目录里。
PHP的安装
在Ubuntu下安装软件是一件非常简单的事,只需要一个命令就可以了,在终端下执行下面的命令:
sudo apt-get install libapache2-mod-php5 php5
安装完后,我们要重新启动Apache,让它加载PHP模块:
sudo /etc/init.d/apache2 restart
接下来,我们就在Web目录下面新建一个PHP文件来测试PHP是否能正常的运行,命令:
sudo gedit /var/www/phpinfo.php
然后输入:
<?php bloginfo(); ?> (注意:使用时将bloginfo换成phpinfo,因为服务器的限制,不能使用phpinfo函数)
接着保存文件,在浏览器里输入http://127.0.0.1/phpinfo.php, 如果出现了一个显示PHP运行参数的页面,那就说明 PHP已经正常运行了。

但是如果没有显示出页面,而是提示你下载文件,这就说明Apaceh没有正确加载PHP模块,这时解决的方法是,在/etc /apache2/apache2.conf 或 /etc/apache2/mods-enabled/php5.conf文件里加入下面的一行命令:
AddType application/x-httpd-php .php .phtml .php3
在加入上面的命令后,再通过下面的命令应重启Apaceh该就能解决问题了:
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart

后有一种情况没有出现这个期望的页面,那有可能是文件夹www没有获得合适的访问权限,可以通过 sudo chmod +x ./www 改变www文件夹的权限。(熟悉linux的这个权限管理应该懂的)
     MySQL的安装
sudo apt-get install mysql-server
在安装的最后,它会要求里输入root的密码,注意,这里的root密码可不是Ubuntu的root密码啊,是你要给MySQL设定的root密码,当 然,如果你乐意的话,你设成一样也是可以的。因为主要是用作本地测试有的,所以到这里MySQL也就安装完成了,如果真的是要用作服务器的话,那可能还要 去参考一下其它的设置,至于这些设置,后续使用到我会写下的。

好了,开发环境安装就此结束,等待编写符合规则的程序吧!
    现在我们进入Linux世界开始我们的PHP编码之旅,在编码中会有各种的问题发生,在解决问题的时间也是自己从新手蜕变的时刻。
每一门程序设计语言都会从变量开始练习开始,PHP是一类嵌入式脚本语言,当然也可以从语法的数据类型开始。这一节主要从PHP的数据类型,数据变量入手学习。
PHP语言的数据类型:
(1)布尔值,【true,false】问:布尔值的定义只有两个:true,false,PHP定义变量同意用$ 表示,如$shop=false;
(2)整型 【十进制,八进制,十六进制】支持的整数与平台有关,对于PHP5以及以前的版本支持+2的31次方,PHP6引入63次方的整型数据.十进制,十六进制基本按照数学的只是进行转换。
(3)浮点型数据,包括单精浮点【float】,双精浮点【double】,实数【real number】,可以包含小数部分的数值,用来表示货币,距离,以及简单整数无法满足的其他表示,例如定义一个数$money=1.0093 默认是浮点类型的数值。
(4)单引号字符串,即用单引号把想使用的文本括起来。如:’I am Siron.’
问:如果我要写 This’s book is highly enjoyable. 该怎么写呢?
PHP中关于单双引号的同时使用注意:
双引号字段会经过编译器解释,然后通过HTML代码输出。
单引号字段不会经过编译器解释,直接输出。
举例子:

<?php
$bookname=”Lua编程指南中文版”;
//双引号—–输出Lua编程指南中文版
echo “$bookname”;
//单引号—-输出$bookname
echo ‘$bookname’;
//交叉输出举例子 ,注意那个单引号要转义 ‘
echo “My book’s name is $bookname”;
?>

一:PHP数据的输出 

PHP支持的丰富的数据类型。后来在学习中会反复使用,有其他语言的学习知识,比较记忆更容易了解PHP的独到之处。下面先阐述一下PHP的输出。PHP向浏览器的基本输出方式有Echo(),Print(),printf(),sprintf()我们可以对比一下一上四种输出方式。 

Function Echo() print() printf() sprintf()
Return Void int: ever return 1 int: string
Express Echo(string argument) print(argument) printf(string format) printf(string format)
Instruction 写入字符串即可 写入字符串,返回值是1,用来验证是否成功显示 支持输出格式字符串,格式参看下面讲述 同样格式字符串,但是不直接呈现浏览器

其实Echo()与print() 的区别是不太大的,使用哪一个完全取决于自己的喜好,后两者一样。什么叫格式化字符串输出呢?有C/C++语言时我们会明白这个意思,也就是输出时我们可以应该适当的格式化符号,让输出格式化。 

二:PHP中使用到的格式化输出格式 

这些格式化符号下表显示: 

类型 描述 举例
%b 将参数认为是一个整数,显示其二进制数 printf(%d,10);=======>显示1010
%c 将参数认为是一个整数,显示其ASCII字符 printf(%c,65);======>显示A
%d 将参数认为是一个整数,显示其十进制 printf(%d,10);=======>10
%f 将参数认为是一个浮点数,显示其浮点数 printf(%f,2);========>2.00000
%o 将参数认为是一个整数,显示其八进制 Printf(%o,8)============10
%s 将参数认为是一个字符串,显示其字符串 printf(%s,”this is a TV ”)=====>this is a TV
%u 将参数认为是一个整数,显示一个无符号十进制 printf(%u,-100)======>100
%x 将参数认为是一个整数,小写的十六进制
%X 将参数认为是一个整数,大写的

三:PHP中变量声明的注意点 
在php中变量的声明类似于shell脚本语言,变量都是以$符号开始的,我们要注意以下几点: 
1):$总是在变量前面,变量是有效的标示符。 
2):变量是严格区分大小写,例如$Book与$book是不一样的。 
3):PHP变量不需要显示声明,刚好与C语言相反。 
4):声明之后便可以为变量赋值,赋值分为按值赋值,引用赋值引用赋值是按堆栈地址赋值 

四:PHP中变量的的作用域 
按照作用域区分变量有局部变量,全局变量,静态变量,PHP还有独特的超级全局变量。局部变量只能在声明的作用域中使用,全局作用变量在整个生命周期中都可以使用。静态变量是声明使用Static 修饰符,在函数退出后static 变量仍然在内存中存在。例如 

<?php
funtion keep()
{
static $count=0;
$count++;
echo $count;
echo “<br />”;
}

keep();//输出1
keep();//输出2
keep();//输出3
keep();//输出4

//你可能以为输出的值全部是1,但是刚好确实是1234,这里正是static的使用效果
?>

五:超级全局变量($_SERVER,$_GET,$_POST,$_COOKIE),$_FILES,$_ENV ,$_SESSION 
再来看超级全局全局变量。PHP提供很多有用的预定义变量,可以再执行脚本的任意位置访问,用于提供大量与环境相关的信息,还可以获得当前用户会话(session),操作环境,本地环境等等。例如可以使用

foreach($_SERVER as $var => $value) 

//遍历输出所有系统超级变量 
echo “$var => $value <br />”; 

可以看到输出好多系统变量 
HTTP_HOST 
=> 
Localhost 
等等系统信息 
我们就可以通过 
$_SERVER[“HTTP_HOST”] 
来获得这些全局变量。$_SERVER全局变量包含WEB服务器,客户配置,当前信息等可以通过查找文档使用。 
另外还可以通过GET方法获取传递的变量。$_GET超级全局变量包含试用GET方法专递的参数的有关信息。例如请求的URL地址是http://www.baidu.com/index.html?cat=apache&id=145 ,就可以使用超级全局变量访问如下变量:$_GET[‘cat’]=”apache”; $_GET[‘id’]=”145” ,默认的情况下要访问通过GET方法传递的变量,$_GET 超级全局变量是唯一的访问途径,不能用$cat, $id的方式引用GET的变量,后续了解关于安全访问外部数据的章节会详细说明。 
另外使用POST的方法也可以传递变量。 
具体如下:$_POST超级全局变量包含用POST方法传递参数有关信息。 
考虑如下的请求表单:

<form action=”a.php” method=”post”> 
<p/> Email-adress:<input type=”text” name=”email” size=”20″ maxlength=”50″ value=””> 
<p />Password:<br /> 
<input type=”password” name=”pswd” size=”20″ maxlength=”15″ value=””> 
<br/> 
<input type=”submit” name=”submit” size=”20″ maxlength=”50″ value=”LOGIN”> 
</form> 

通过目标脚本a.php就可以使用下面这些POST变量: 
$_POST[‘email’]=”zyl0395@126.com”; 
$_POST[‘pswd’]=”Bestyear”; 
我们还可以使用超级全局变量保存COOKIE信息,$_COOKIE保存了HTTPcookie中的所有传到脚本的信息,这些cookie一般由以前执行的PHP脚本通过PHP函数setcookie()设置的。例如: 

<?php 
$value = ‘ somewhere’; 
setcookie(“TestCookie”, $value); 
setcookie(“TestCookie”, $value, time()+3600); /* 一小时有效cookie */ 
setcookie(“TestCookie”, $value, time()+3600, “/~rasmus/”, “example.com”, 1); 
?> 

这里看不懂无所谓的,后来还会专门研究cookie的知识。 
$_FILES是通过POST向服务器上传文件使用的变量,$_files主要用在当需要上传二进制文件的地方,录入上传一个abc.mp3文件,则服务器端需要获得该文件的相关信息,则通过变量$_files来取得。 共有五个元素: 
1):$_FILES[‘userfile’][‘name’] 
客户端机器文件的原名称。 
2):$_FILES[‘userfile’][‘type’] 
文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。 
3):$_FILES[‘userfile’][‘size’] 
已上传文件的大小,单位为字节。 
4):$_FILES[‘userfile’][‘tmp_name’] 
文件被上传后在服务端储存的临时文件名。 
5):$_FILES[‘userfile’][‘error’] 
和该文件上传相关的错误代码。[‘error’] 是在 PHP 4.2.0 版本中增加的。 
$_EVN 是PhP服务器使用的有关信息, $_SESSION 获得会话的有关信息 

六:PHP 常量定义使用 
常量是程序中无法更改的量,非常有用如:圆周率 
定义:define(”PI” ,3.1415926) 
使用 echo PI; 
七:关于PHP中的逻辑符号,运算等级,表达式,流程控制,逻辑等等不再介绍,基本和C++语言相符,这里只是简单写一下没有的部分。例如 Include 在PHP中的作用。 
include在PHP中也是引入包含文件的句子,基本语法是include(/path/to/file)要引用/user/local/lib/php/wjgilmore/init.inc.php 则要这样: 

<?php 
include “/user/local/lib/php/wjgilmore/init.inc.php “; 
?>

有个地方需要注意,就是 
include在判断句中是,必须要用大括号{}界定 
,否则会错误,这个要注意.,还可以通过include引用一个远程文件.如果文件所在的服务器支持PHP,通过传递必要的键值对(类似于GET请求的做法,所包含的变量也会得到解析) 
例如:include “http://www.123.com/index.html?background=red”; 
如果只引用一次,则用 
include_once 
,首先会检验是否引用了这个文件,如果没有则引用,如果有则不执行 
include_once(), 
确保一次。 
同样的方法require是请求文件,同样是require_once请求一次。后续用到时间详细解释。