马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 mumudontcry 于 2017-3-9 00:52 编辑
前情提要前几天发了关于 PHP 的教程系列 “php包教不包会系列” ,除了第一篇开篇大家兴致很高,似乎后面的都没有怎么热情,这是情理之中的 因为…… 众人:一上来你就弄那么难的你是要闹哪样啊! 那么今天先简单回顾一下上三期的内容 然后是关于这个系列的教程发布,因为我发现确实小伙伴们对 PHP 感兴趣(众人:你是怎么看出来的喂!),但是我这种没有规律的更新(上个星期一天上午更新了三篇,然后消失了一个星期,其实去看你们回复了),可能让人没法学习下去,那么 本教程一个星期 3 期,会在晚上偶数星期 10 点之前发出 如果因为本人有事没有更新或者忘了更新,那么最迟会在星期六或者星期天把这周应该上的补上 每期都会有练习,请一定要自己完成(毕竟我不检查) 还是那句话,喜欢的小伙伴记得打赏 (我真凑不要脸) 那么下面我们就开始真正步入 PHP 的世界吧 PHP 总览建议使用 PHP5.6 去学习,甚至是 7,目前 PHP 最新的是 7,5 系列最高版本是 5.6,没有 PHP6,因为,夭折了 这里我们约定: …code…表示这是一段 PHP 代码,但是不重要,因此省略 基本内容PHP 标记 当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php 和 ?>,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略 PHP 也支持其他标记,但是!由于各种原因和理由,请只使用“<?php ?>” <?php
echo 'hello world';
?>
另外,如果一个文件是一个纯 PHP 文件,请省略结束标记,否则可能导致一些预想不到的结果!之后的代码示例中,如果是纯 PHP 代码,我也不再写结束标记 出于一个良好的习惯,请在开始标记后加一个空行,这里的代码都是这样格式 注释 PHP 支持行注释和块注释 行注释: // 块注释:/* …code… */ 类型PHP 支持 8 种原始数据类型 四种标量类型:布尔型、整型、浮点型、字符串 两种复合类型:数组、对象 两种特殊类型:资源、null <?php
// 布尔型:true 和 false
$var = true;
// 整型
$var = 1;
// 浮点型
$var = 3.14;
// 字符串
$var = 'girl friend';
// 数组
$var = [true, 1, 3.14, 'girl friend'];
//对象
class Test{
public $value = '';
}
$var = new Test();// 类Test的对象
// 资源类型指文件、数据库等句柄,因此这里不举例
// null
$var = null;
变量 PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的 一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线 如:$var 、 $_var 、 $_1 、 $var1 …… 不合法变量的例子: $1 、1 、 var …… PHP 的变量是动态设置和使用的,这表示,你不需要像 java 等语言那样,需要使用一个前缀(或其他)的方式去声明一个变量的类型,而且,PHP 变量的类型是根据上下文语境去判定,因此上面关于类型的例子是可以成功执行的,$var 最终的值会变成 null 常量常量是一个简单值的标识符(名字),常量默认为大小写敏感。传统上常量标识符总是大写的 下面这个出现在 C 语言的笑话,在 PHP 里是行不通的,所以,不要和蠢萌的新手开这种玩笑了,同时也建议,不要随便定义系统自带的值,因为常量一旦被定义,就无法重新定义! <?php
define("TRUE", false);
运算符 这一块和你认识的其他语言的运算符类似,比如 + 就是加法等等,这里只说明一些需要注意的,具体的在具体篇幅里会详细介绍 算术运算符:+,-,*,/,%(求余) = 是赋值号,== 是等于号,=== 是全等于(会比较类型),等号还有类似的 != 和 !== @ 是错误控制运算符,可以抑制之后的表达式产生的错误,不要依赖它,因为,耗性能以及让别人无法找出 bug 位运算符:& 按位与,| 按位或,^ 按位异或,~ 按位取反,<< 左移,>> 右移 逻辑运算符:and,or,not 或者 &&,||,!,请一定使用后者,前者可能导致一些问题 递增(减)运算符:++,– 字符串拼接: ‘hello’ . ‘world’ 数组运算符:+联合,==等于,===全等于(会比较键值对顺序),还有类似的不等于!= 和 !==,用得不多,没有人用这种方式去比较数组,毕竟 PHP 函数很强大 类型运算符:instanceof 流程控制if 语句 <?php
if (true) {
// 这个分支并不是一个笑话,你可以在注释某一段代码时使用,而且这种写法适用于所有的程序
}elseif ( $var == 1) {
// == 是等于,在类型不一致时 PHP 会尝试强制转换
// 尤其注意数字的强制转换,PHP 会尝试把和数字比较的东西转换成数字去比较
// 因此 '1a' == 1 是成立的,a会被丢掉
}else if ( 1 === $var ) {
// 基于 == 的不靠谱比较,请明确了解变量类型时,使用 === 代替 ==
// 并且让常量放在前面是一个好习惯,不会因为少写了等号变成赋值号而出现意外
}else {
// 以上是关于 if 的需要注意的细节以及 if 流程控制的用法,我是不是太懒了
}
for 语句 for (expr1; expr2; expr3) <?php
for ($i = 1; $i <=10; $i++){...code...}
请不要在 for 循环的上面三个表达式当中写函数,因为每次循环都会执行一遍 如果要循环数组,最好使用 foreach foreach( $array as $key => $value) {}
此外还有 while 和 do … while 循环,这个和其他语言是类似的,值得一提的是,在 PHP 的编程之中,使用 foreach 的频率最高,因为 PHP 的最终运算都是数组以及字符串(所以你看 PHP 的数组和字符串函数是不是特别多和强大) 可以使用 break 和 continue 跳过循环 switch 语句 <?php
switch($var) {
case 1:
...code...
break;
case 2:
...code...
default:
...code...
}
include 语句 包含并运行指定文件 require 语句和 include 基本等价,暂时不用区分 include_once 以及 require_once 语句不会重复包含文件,这是和 include 以及 require 的区别 <?php
include 'test.php';
其他 goto 语句、declare 语句 函数<?php
function test($var1, &$var3, $var2 = 1) {
...code...
return $result;
}
这是一个函数的定义,其中 $var1 是必填参数,$var2 带有一个默认值,是可选参数,必填参数不能放在可选参数之后 return 会返回一个函数的值 参数可以使用引用参数,如 $var3,这样你就可以带多个参数出来了,这种函数在 PHP 自带的函数里很常见 关于函数的内容,和其他语言类似,也有局部变量、全局变量、闭包等,这里暂时先不讨论 类与对象每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,里面包含有类的属性与方法的定义,类对大小写不敏感 一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”) <?php
class A{
public $var1 = 1;
protected $var2;
private $var3;
public function test(){}
}
当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用 <?php
class A{
...code...
public function test(){
return $this->var2; // protected 属性 $var2 没有初始化,因此返回一个null
}
}
要创建一个类的实例,必须使用 new 关键字 <?php
...code...
$a = new A();
一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类 <?php
class B extends A {
...code...
}
命名空间 PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径,用来解决名字冲突或者不好起名字的问题 命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间 <?php
namespace MyTest;
...code...
由于在我们在讨论 PHP 的时候,可能大多数情况都是讲网站,而如今 PHP 出现了大量的 web 框架,这些框架大多数也使用了命名空间(PHP 5.3 以下没有命名空间),而他们基本上都会一个 PHP 文件对应一个类,因此,我们给命名空间命名的时候基本遵循和类的名字一致,都是大驼峰写法 异常处理function inverse($num){
if ($num == 0) {
throw new Exception('错误:分母为0!');
}
return 1 / $num;
}
try {
echo inverse(2); // 返回 0.5
echo inverse(0); // 抛出异常
} catch (Exception $e) {
echo $e->getMessage();
}
我们想要写一个计算倒数的函数,在函数里,我们必须自己判断分母是不是等于 0, 然后把异常抛出 末尾到这里,PHP 的基本知识就大概讲了一遍,你在平时用的时候真的也就用这些,以及文中提到的数组和字符串函数,是不是发现根本就不需要多少时间就可以搞定? PHP 的基础知识之后,你需要做的只是,谷歌百度,看 PHP 手册,实现功能,就这么简单 以上知识已经可以帮你实现一个什么斐波那契数列啊的数学问题了 下一期会详细开始讲解 PHP 的每一个知识点,希望还没有使用 Sublime 调试的童鞋赶紧行动起来,做好小笔记 我可以用我在江湖上鬼混这么多年的经验告诉大家,后面开始的每一期的内容,你不会在市面上见到任何系列的视频教程或者文字教程告诉你这些知识需要注意的地方或者彩蛋 本期作业: 你可以使用 var_dump 或者 echo 输出结果查看是否正确 运行代码 请运行上面出现的代码 …code… 表示代码的省略,真实执行时请用对应代码或者注释掉,以后不再赘述 有问题及时反馈给我 计算1到100的和 把答案告诉我,我不介意你们这样写: <?php
echo 1 + 2 + 3 + ...code... + 100;
写一个生成斐波那契数列的函数func <?php
function func(...code...){
...code...
}
不会的看手册以及百度 另外安利一下我的 github 项目,里面有好多 PHP 的题目以及答案,你们可以自己去尝试一下 传送门:https://github.com/forsona/codewarsKata
#################### 华丽的 PHP 版分割线 ####################
如果喜欢木木的讲解,就点击下方的订阅(读作:打赏),给木木点个赞吧,欢迎大家提出建议或者指正
一块钱买不了皮肤,买不了香烟,却可以跟着木木一起打怪升级,并给木木巨大的支持,有了大家的力量,木木就可以制造元气弹,打败……嗯,买一个好一点的女朋友啦
|