1+X | php
why PHP?
什么是PHP?
PHP是PHP:hypertext preprocessor(超文本预处理器)的缩写,是一种服务端、跨平台、html嵌入式的脚本语言,其独特的语法混合了c语言、Java语言和perl语言的特点,是一种被广泛应用的开源式的多用途脚本语言,尤其适合web 开发
PHP语言的优势?
安全性高、跨平台特性、支持广泛的数据库、易学性、执行速度快、免费、模版化、支持面向对象与过程、内嵌zend加速引擎,性能稳定快速…….
PHP的发展趋势?
由于PHP是一种面向对象的、完全跨平台的新型web开发语言,所以无论从开发者角度考虑还是从经济角度考虑,都是十分实用的。PHP语法结构简单,易于入门,很多功能只需一个函数就可以实现,并且很多机构都相继推出了用于开发PHP的IDE工具。
全球排名前50的网站前端开发语言,40%是使用PHP语言开发的,其中包括排名第一的Facebook,以及日常上网经常会用到的网站,雅虎、百度、腾讯、淘宝、新浪、hao123、天猫、搜狐等
环境配置篇
基础操作
-
关闭Apache服务:
sudo apachectl stop
-
重启APache服务:
sudo apachectl restart
修改网页目录
- php配置文件:
php.ini
- apache配置文件:
/etc/apache2/httpd.conf
- 网页目录:
/Library/WebServer/Documents
-
打开php服务
打开文件``/etc/apache2/httpd.conf
,将这行代码前面的
#`去掉LoadModule php7_module libexec/apache2/libphp7.so
-
修改项目路径(可选)
- 修改
httpd.conf
文件中的DocumentRoot
改为想要的路径:
DocumentRoot "/Users/billie/Desktop/php/Documents" <Directory "/Users/billie/Desktop/php/Documents">
- 创建文件
/etc/apache2/users/MuyunLee.conf
,并在文件中输入以下代码
<Directory "/Users/MuyunLee/PHPWorkSpace"> Options Indexes MultiViews AllowOverride All Require all granted # OSX 10.10 / Apache 2.4 </Directory>
- 找到
/etc/apache2/httpd.conf
文件中
-Options FollowSymLinks Multiviews +Options FollowSymLinks Multiviews Indexes
- 修改
-
启动apache服务器
sudo apachectl start
- 在编辑器中写PHP代码,网页直接输入 http://localhost/项目名/PHP代码页面,完成!
语法篇
变量
关键词: 弱类型
- 声明变量: $符号+变量名
- 作用域
- local
- global - 全局变量
- static - 静态变量,不可以在函数外部使用,在离开作用域之后,值不会丢失
- parameter
输出
echo
- 可以输出一项或多项,每一项用.
分隔开print
- 只允许输出一项,返回值总为 1print_r(变量)
- 用于打印变量,以更容易理解的形式展示var_dump(变量)
- 返回变量的数据类型和值
ps - echo输出的速度比print快,echo没有返回值,print有返回值1,两者使用时,括号可加可不加
引入
require在引入不存文件时产生一个警告且脚本还会继续执行,而include则会导致一个致命性错误且脚本停止执行
include
require
include_once
require_once
include './xx.php'; //引入其他脚本
单引号和双引号
- ’’ : 纯字符串
- "" : 可解析字符串中的变量
数据类型
-
string - 字符串
- 字符串连接运算符
.
strlen()
- 获取字符串长度strpos($e,'',5)
- 获取子串位置strrpos($e,'',5)
- 从后面开始检索trim()
- 去掉首位的字符串ltrim()
- 去掉首部的rtrim()
- 去掉尾部的explode('',$e,3)
- 按照什么来分割,需要分割的字符串,分割成几块(默认分割成尽可能多块)str_split($e,3)
- 需要分割的字符串,每个字符串的长度(默认是1)
- 字符串连接运算符
-
integer - 整型
-
float - 浮点型
-
boolean - 布尔型
-
array - 数组
-
创建一个数组:
$arr=array('','');
-
返回数组长度:
count()
-
定义关联数组:
$age=array("a"=>"1","b"=>"2")
-
遍历关联数组
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; }
-
数组排序
- sort() - 对数组进行升序排列
- rsort() - 对数组进行降序排列
- asort() - 根据关联数组的值,对数组进行升序排列
- ksort() - 根据关联数组的键,对数组进行升序排列
- arsort() - 根据关联数组的值,对数组进行降序排列
- krsort() - 根据关联数组的键,对数组进行降序排列
-
数组拼接
implode('拼接符号',数组)
:把数组中的内容,拼接成字符串
-
-
object - 对象
声明一个对象:
- 使用class关键字声明类对象
- 在类中定义数据类型
- 在实例化的类中使用数据类型
-
null - 空值
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
unset(变量)
可以把变量变成null
$val = (int)$value1; //转化成整型
$val = (string)$value1; //转化成字符串
$val = (bool)$value1; //转化成布尔值
常量
常量是一个简单值的标识符,该值在脚本中不能改变
声明常量:
-
define(constant_name, mixed value, case_sensitive = true)
constant_name
:必选参数,常量名称,即标志符value
:必选参数,常量的值case_sensitive
:可选参数,指定是否大小写敏感,设定为 true 表示不敏感。
-
const
const name='billie';
预定义常量: M_PI等
运算符
<?php
//四则运算符 +-*/
//逻辑运算符 !(非) &&(与) ||(或) and(与) or(或) xor(异或)
//数组运算符 +(合并) ==(比较) !=(不等) ===(全等,值和数据类型) !==(全不等)
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
//位运算符 & | ^ << >>
//比较运算符 > < >= <= <=>(左边小返回-1,左右相等返回0,右边大返回1)
//空合并符 ??
var_dump(null??2??3); //返回从左到右数第一个不是null的值
//三目运算符
echo $a===1?'是1':'不是1';
//错误控制运算符
$e=@(1/0);
?>
注释
- 单行:
//
- 多行:
/**/
流程控制
跟js一样(差不多吧
-
单分支:
if(){}
-
双分支:
if(){}else{}
-
多分支:
if(): elseif(): else: endif;
/if(){}else if(){}else{}
-
switch分支:
switch(){}
//switch $d = 3; switch($d){ case '1': echo 'out'; break; case '2': echo 'yes'; break; case '3': echo 'out'; break; default: echo 'you deserve it'; }
-
for循环:
for(){}
for($i=0;$i<5;$i++){ echo $i } //九九乘法表 for($i=1;$1<10;$i++){ for($o=1;$o<$i+1;$o++){ echo $o.'x'.$i.'='.$i*$o.' '; } echo '<br>' }
-
while循环:
while(){}
do{}while()
$j=0; while($j<5){ echo 'small'; $j++; }; do{ echo 'small'; $j++; }while($j<5);
-
数组循环:
foreach(){}
$m=array('a','b','c'); foreach($m as $value){ echo $value; }
超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。
- $GLOBALS - 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
- $_SERVER - 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目
- $_REQUEST - 用于收集HTML表单提交的数据。
- $_POST - 被广泛应用于收集表单数据,在HTML form标签的指定该属性:“method=“post”
- $_GET - 被广泛应用于收集表单数据,在HTML form标签的指定该属性:“method=“get”;也可以收集URL中发送的数据
- $_COOKIE
- $_FILES
- $_ENV
- $_SESSION
函数
PHP 的真正威力源自于它的函数。
在 PHP 中,提供了超过 1000 个内建的函数。
自定义函数的关键字 - function
- 锚点:
goto
//goto anchor;
//...
//anchor:
//...
$number = 1;
switch($number){
case 1:
goto one; //使用goto跳到one标记处
echo "第一名"; //goto已经跳转,这条语句不执行
case 2:
goto two;
echo "第二名";
case 3:
goto three;
echo "第三名";
}
one:
echo " 武林第一!";
//exit;
two:
echo " 武林第二!";
//exit;
three:
echo " 武林第三!";
数字操作函数
面向对象
- 定义类与对象实例化
- 修饰符
- 高阶操作