php语法注意点
注意点
1.必须放在服务器配置的网站目录中
2.不要直接右键用webstorm sublime运行
3.必须写在<?php ?>标签中
4.执行的位置是在服务端,需要通过浏览器请求.php页面才能够执行
5.php的逻辑代码不会输出,仅仅只会返回 执行完毕的结果
6.忘记写结束的 ;
7.使用中文文件名
xxx.php中的xxx不能有中文字
http://127.0.0.1/2016-9-28/02.php url中 不能有中文字
8.如果没有提示,检查是否文件为php
9.网站根目录有index的文件,会默认找index 修改文件名即可
php在实际开发中的使用方式
会嵌入到前端工程师 写好的 .html中 注意 需要把后缀改为.php
在希望被替换的位置 使用 <?php php代码 ?> 进行占位 就能够 根据用户提交的数据 动态生成界面
c/s和b/s架构
C/S架构
是Client/Server这两个单词的首字母,指的是客户端,服务器架构的意思,很多常见的软件都是这种架构呢
- 解释 对于C/S架构,最为常见的例子就是网络游戏,比如LOL,WOW如果不联网无法使用,你在软件内所做的所有操作通过互联网能够传递到其他的的玩家身上
- 优点:
- 性能较高:可以将一部分的计算工作放在客户端上,这样服务器只需要处理数据即可
- 界面酷炫:客户端可以使用更多系统提供的效果,做出更为炫目的效果
- 缺点:
- 更新软件:如果推出了新版本,不更新客户端无法登陆使用(一部分)
- 不同设备访问:如果使用其他的电脑,没有安装客户端的话就无法登陆软件(比如收发邮件)
B/S架构
是Browser/Server的这两个单词的首字母,指的是浏览器,服务器,是WEB兴起之后的一种架构
- 解释 现在所有的网站都是B/S架构,较为常见的例子有百度,知乎,网易云音乐Web等等,所有只需要通过浏览器即可使用.
- 优点
- 更新简洁:如果需要更新内容了,对开发人员而言需要更改服务器的内容,但是对用户而言只需要刷新浏览器即可
- 多设备同步:所有数据都在网上,只要能够使用浏览器即可登录使用
- 缺点:
- 性能较低:相比于客户端应用性能较低,但是随着硬件性能的提升,这个差距在缩小
- 浏览器兼容:处理低版本的浏览器显示问题一直是前端开发人员头痛的问题之一,移动设备兼容性较好,ie6已经越来越少人用了
服务器(服务端开发,后台开发)
服务器分类
- 按类型分:
- 文件服务器、数据库服务器、邮件服务器、Web 服务器等;
- 按软件分:
- Apache服务器、Nginx 服务器、IIS服务器、Tomcat服务器、Node服务器等。
- 按操作系统分:
- Linux服务器、Windows服务器等;
常见服务器软件
- 文件服务器:Server-U、FileZilla、VsFTP等;
- 数据库服务器:Oracle、MySQL、PostgreSQL、MSSQL等;
- 邮件服务器:Postfix、Sendmail等;
- HTTP 服务器:Apache、Nginx、IIS、Tomcat、NodeJS等; 这里我们主要介绍HTTP服务器
HTTP协议:
- 浏览器发出请求->互联网上的服务器
- 服务器获取请求->请求的浏览器 参照之前的HTML标准格式,浏览器找服务器要数据这个操作也需要彼此之间有一定的共识,而这种共识就叫做HTTP协议
HTTP服务器
- 直译过来就是网站服务器,主要为用户提供各种文档资源(文本,图片,音频等)一般安装有,IIS,apache等软件
- 当我们的请求到达服务器时,会根据我们请求的内容进行一些逻辑处理,返回不同的页面给用户,这部分的开发叫做服务端开发,可以开发的语言有:PHP,Asp,Jsp,Ruby,Erland等等
数据库(DBA数据库管理员)
试想一下,如果一个网站的注册用户有1千万个那么应该使用什么格式,什么方式来保存这些数据呢?
- 数据库:
- 按照数据结构来组织,存储和管理数据的仓库,软件开发行业一般指的是数据库软件,常见的有:Oracle、MySQL、MSSQL等
- 特点:
- 数据共享:多用户同时访问数据的稳定性
- 故障恢复:数据库软件提供了一套的方法,可以用来发现错误并且修复错误
- 减少数据冗余:由于大家都可以使用同一套数据,没有必要重复创建了
http服务搭建
AMP
AMP:A:Apache,M:MySQL,P:PHP
- Apache 世界排名第一的服务器软件,特点是简单,速度快,性能稳定
- MySQL 得益于他体积小、速度快、使用成本低,而且是开源哦,所以很多网站都选用MySql作为他们的数据库.
- PHP 展开后PHP: Hypertext Preprocessor,中文名:超文本预处理器,直接将代码嵌入HTML 文档中执行,简单易学,容易上手.
AMP集成环境
- WAMP: 在windows平台下如果想要一步到位安装好这些软件,可以使用wamp,其中w的意思为windows指的是windows操作系统 软件的官网为:wamp官方网站
- XAMPP: 不同于wamp针对于windows,XAMPP可以安装在Linux,Windows,MAC OS X,Solaris这些操作系统上面
PHP常见语法
文件定义,注释
PHP文件以.php结尾,代码的编写位置在<?php 写在这里?>.注释的写法跟js一致
<?php
//这是单行注释
/*
这是多行注释
*/
?>
PHP变量规则
- 变量以$符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及_)
- 变量名称对大小写敏感
数据类型
PHP支持的数据类型包括:字符串,整数,浮点数,布尔,数组,对象,NULLL(注:由于对象中可以使用函数,故对象的语法在下文中会提及)
- 定义字符串时需要注意:
- 单引号:`` 内部的内容只是作为字符串
- 双引号:"" 如果内部是PHP的变量,那么会将该变量的值解析(如果写的是变量名 会将变量的值丢进去)
- 字符串连接:不同于JavaScript,PHP中使用.进行连接
// 字符串
$str = '123';
// 字符串连接
$str2 = '123'.'哈哈哈';
// 整数
$numA = 1; //正数
$numB = -2;//负数
// 浮点数
$x = 1.1;
// 布尔
$a = true;
$b = false;
// 数组
$arr = array('123',123)
运算符
PHP中的运算符跟JavaScript中的基本一致,用法也基本一致
- 算数运算符: +,-,/,*,%
- 赋值运算符: x = y,x += y,x -= y 注:这里列举的并不完全,更为详细的PHP运算符教程请查阅w3cschool_PHP运算符
函数
PHP虽然系统内建了一些函数,但是这不影响我们定义自己的. 函数的作用就是在代码中可以重复使用的语法块,页面加载的时候不会执行,只有在被调用的时候才会执行
// 基础语法
function functionName() {
这里写代码
}
// 无参数 无返回值的函数
function sayhi(){
echo "Hello World";
}
// 有参数 无返回值的函数
function sayName($name){
echo $name.'你好哦';
}
// 调用
sayName('小狐狸');
// 有参数,参数有默认值的函数
function sayFood($food='西兰花'){
echo $food.'好好吃';
}
// 调用
sayFood('西葫芦');// 如果传入参数,就使用传入的参数
sayFood();// 如果不传入参数,直接使用默认值
// 有参数,有返回值的函数
function sum($a,$b){
return $a+$b
}
sum(1,2);// 返回值为1+2 = 3
对象
PHP中允许使用对象这种,自定义数据类型. 使用时必须先声明,实例化之后才能够使用
// 定义最基础的类
class Fox{
public $name = 'itcast';
public $age = 10;
}
$fox = new $fox;
// 对象属性取值
$name = $fox->name;
// 对象属性赋值
$fox->name = '小狐狸';
// 带构造函数的对象
class fox{
// 私有属性,外部无法访问
var $name = '小狐狸';
// 定义方法 用来获取属性
function Name(){
return $this->name;
}
// 构造函数,可以传入参数
function fox($name){
$this->name = $name
}
}
// 定义了构造函数 需要使用构造函数初始化对象
$fox = new fox('小狐狸');
// 调用对象方法,获取对象名
$foxName = $fox->Name();
内容输出
- echo:PHP语句直接使用即可,输出字符串
- print_r():函数输出复杂数据类型,比如数组,对象
- var_dump():函数输出详细信息,如对象、数组
$arr =array(1,2,'123');
echo'123';
// 结果为 123
print_r($arr);
// 结果为 Array ( [0] => 1 [1] => 2 [2] => 123 )
var_dump($arr);
/* 结果为
array
0 => int 1
1 => int 2
2 => string '123' (length=3)
*/
循环语句
这里只列举了foreach,for循环
// for 循环
for ($x=0; $x<=10; $x++) {
echo "数字是:$x <br>";
}
// foreach 循环
$colors = array("red","green","blue","yellow");
// 参数1为循环的对象,参数2会将对象的值挨个取出,直到最后
// 如果循环的是对象的话,输出的是对象属性的值
foreach ($colors as $value) {
echo "$value <br>";
}
输出结果为
/*
red
green
blue
yellow
*/
header()函数
浏览器访问http服务器,接收到响应时,会根据响应报文头的内容进行一些具体的操作,在php中,我们能够使用 header来设置这些内容
- 设置文本编码
用来向客户端(浏览器)发送报头,如果出现中文无法显示,可以尝试在PHP代码顶部添加 如下代码
- 设置编码格式为:utf-8
header('content-type:text/html; charset= utf-8');
-
设置页面跳转
- 设置跳转到百度首页
header('location:http://www.baidu.com');
-
设置页面间隔刷新
header('refresh:3; url=http://www.xiaomi.com');
php表单
PHP_GET数据获取
在PHP中,如果想要获取通过get方法提交的数据,可以通过$_GET对象来获取(虽然参数在地址栏中可以查看)
- HTML代码: 下面就是一个简单的表单代码,将数据提交到01.php,使用get的方式
<form action="01.php" method="get" >
<label for="">姓名:
<input type="text" name= "userName"></label>
<br/>
<label for="">邮箱:
<input type="text" name= "userEmail"></label>
<br/>
<input type="submit" name="">
</form>
- PHP代码:
<?php
echo "<h1>GET_PAGE</h1>";
echo 'userName:'.$_GET['userName'];
echo '<br/>';
echo 'userEmail:'.$_GET['userEmail'];
?>
PHP_POST数据获取
在PHP中,如果想要获取通过post方法提交的数据,可以通过$_POST对象来获取
- HTML代码: 下面就是一个简单的表单代码,将数据提交到02.php,使用post的方式(注意:代码中的method改为post)
<form action="02.php" method="post" >
<label for="">姓名:
<input type="text" name= "userName"></label>
<br/>
<label for="">邮箱:
<input type="text" name= "userEmail"></label>
<br/>
<input type="submit" name="">
</form>
- PHP代码:
<?php
echo "<h1>POST_PAGE</h1>";
echo 'userName:'.$_POST['userName'];
echo '<br/>';
echo 'userEmail:'.$_POST['userEmail'];
?>
POST&GET错误处理
当我们直接访问POST&GET页面时由于并没有传递任何数据,会因为$_GET或$_POST不存在对应的key而报错.
- 处理方式1:
- 使用array_key_exists(key, 数组)函数来进行判断
- 参数1: 要检测的key字符串
- 参数2: 检验的数组
if(array_key_exists('name', $_GET)){
//如果有数据 再去读取
}else{
// 反之 可以执行一些 其他的逻辑
}
PHP文件上传处理01_$_FILES对象
上传文件时html代码中需要进行如下设置:
- 在html表单中需要设置enctype="multipart/form-data"
- 只能post方式 PHP接收文件可以通过$_FILES来获取
- HTML代码:
<form action="03.fileUpdate.php" method="post" enctype="multipart/form-data">
<label for="">照片:
<input type="file" name = "picture" multiple=""></label>
<br/>
<input type="submit" name="">
</form>
- PHP代码01 这部分代码测试$_FILES文件的具体内容
<?php
sleep(5);// 让服务器休息一会
print_r($_FILES);
?>
- 现象:
- 点击提交后,服务器没有立即出现反应,而是休息了一会sleep(5)
- 在wamp/tmp目录下面出现了一个.tmp文件
- .tmp文件一会就被自动删除了
- 服务器返回的内容中,有文件的名字[name] => computer.png,以及上传文件保存的位置D:\wamp\tmp\php3D70.tmp
PHP文件上传处理02_文件保存
刚刚演示了$_FILES对象的作用,以及PHP接受上传文件时,会先保存在一个临时目录下,那么接下来我们就演示如何将临时目录下面的文件保存起来
- HTML代码: 这部分的代码不需要改变
<form action="03.fileUpdate.php" method="post" enctype="multipart/form-data">
<label for="">照片:
<input type="file" name = "picture" multiple=""></label>
<br/>
<input type="submit" name="">
</form>
- PHP代码 move_uploaded_file()这个函数可以处理文件 w3cSchool_move_uploaded_file函数解释
Array ( [picture] => Array (
[name] => computer.png
[type] => image/png
[tmp_name] => D:\wamp\tmp\php8913.tmp
[error] => 0 [size] => 5212 )
)
其中我们需要通过picture(根据表单标签的name属性决定)获取临时文件名以及上传文件名
<?php
sleep(5);// 让服务器休息一会,方便我们查看上传的临时文件
// 第一个参数是 规定要移动的文件
// 第二个参数是 规定文件的新位置
move_uploaded_file($_FILES['picture']['tmp_name'], './upload/'.$_FILES['picture']['name']);
?>