资讯专栏INFORMATION COLUMN

三篇文章带你极速入门php(一)之语法

loostudy / 1134人阅读

摘要:本文适合阅读用户有其他语言基础的童鞋看完语法教程来回顾一下的童鞋传送门,想全面看一下语法推荐这里毫无基础然而天资聪慧颇有慧根不要左顾右看说的就是你,老夫这里有一本从入门到放弃,观你根骨清奇两银子卖给你如何看完本文后你会收获到什么的变量的定义

本文适合阅读用户

有其他语言基础的童鞋

看完w3cschool语法教程来回顾一下的童鞋(传送门,想全面看一下php语法推荐这里)

毫无基础然而天资聪慧颇有慧根(不要左顾右看说的就是你,老夫这里有一本《php从入门到放弃》,观你根骨清奇10两银子卖给你如何)

看完本文后你会收获到什么

php的变量的定义,使用

函数的定义,使用,传递参数

数组的定义,调用,常用方法,使用场景

php中循环,判断,选择结构的语法

类的定义,成员变量和成员函数的定义和使用

相信我,认真看完本文,你就已经掌握了php常用的语法了,足以进行一些常规的开发,剩下的可以用到再学,避免在学了忘学了忘的语法坑中沉迷太久(๑•̀ㅂ•́)و✧
用php导演一场情景剧

这就是今天的目的,假设我们已经搭建好了环境(下一节会讲),现在开始进行 编码 创造世界。
首先定义一下我们的题目,myphp

//定义我们的题目
$title = "myphp";

php定义变量用$符号,php是弱类型变量语言,不区分变量的类型,""和它里边内容在一起表示一个字符串。 另外//表示注释,就是解释性的话,并不会作为代码运行

//这个方法用来输出
function show($str)
{
    echo $str . "
"; }

再定义一个方法(也叫函数,只是叫法不一样而已啦),定义方法用function关键字,括号里的是参数,直接用变量表示就可以,在调用的时候接收调用时传来的参数
echo是php自带的输出方法,没有括号是因为它比较特殊,可以先不管,会用就行
.是php中字符串拼接的符号,
是html中的换行符,为了让输出更好看

//方法直接调用就好
show("hello " . $title);

输出如下图

//定义发生异常时触发的函数
function error($str)
{
    echo "{$str}
"; exit(); }

在""双引号内,可以直接用花括号包裹起来一个变量,这样在被调用的时候变量就会直接在字符串中替换为变量的值,单引号不可以
exit()方法让整个程序结束

//用[]可以直接创建一个空的数组,然后一一赋值
$person1         = [];
$person1["name"] = "高富帅";
$person1["sex"]  = "男";

//也可以直接创建一个有值的数组
$person2 = ["name" => "白富美", "sex" => "女"];
//这是一个二维数组,也可以用同样的方式创建更多维的数组
$persons = [$person1, $person2];

既然是情景剧,得有个男女主角呀,打印出来看看这个二维数组,发现下标是从0开始的,不要奇怪所有编程语言都是这样的

接下来定义一个类,类可以暂时理解为一些数据和方法的集合,也就是我们的情景剧啦

class MyPhp
{
}

定义类用class关键字,空格后是类的名字,注意只能是英文字母或者下划线_开头
情景剧不能什么都没有啊,我们再给它定义一些必要的成员变量和成员方法

class MyPhp
{
    //表示我们的演员们
    public $actors = null;
    //自带bgm的情景剧
    public $music  = "我心永恒";

    public function __construct()
    {
        $this->start();
    }

    public function start()
    {
        $time = time();
        show("时间:{$time}");
        $date = date("Y-m-d h:m:s", $time);
        show("哦~一般人还是看日期好一点 {$date}");
        show("播放片头曲~~{$this->music}");
    }
}

成员变量:成员变量直接用$符号声明就可以,public private protected 是成员变量的访问控制权限(同样适用于成员方法),分别表示共有,私有,受保护的,null是php里的空指针的关键字

成员方法:

有一些自带的成员方法,比如构造函数__construct,php中__开头(两个下划线)的函数都是默认自带的函数,__construct是构造函数,初始化一个类对象的时候会调用这个方法

可以自己定义成员方法,如start这个方法,定义方法和普通方法一样,控制权限和成员变量一样也是public private protected三个

调用成员变量,如$this->music,注意此时成员变量不要加$符号。调用成员方法,如$this->start()

时间和日期:time()方法获取一个当前的时间戳,date()方法接受两个参数,第一个是一个字符串表示格式化格式,第二个参数是一个时间戳,返回格式化之后的时间

    //定义一个方法,让演员加入进来
    public function actorJoin($actorlist)
    {
        //我们判断演员是一个数组并且有两个人才可以,否则男女主角肯定有一个人没来或者第三者插足了
        if (is_array($actorlist) && count($actorlist) == 2) {
            $this->actors = $actorlist;
        } else {
            error("还有演员没有就位");
        }
    }

is_array()方法判断参数变量是否是数组
count()方法返回参数数组的长度
if(){}else{}结构是条件语句语法,括号内的判断语句如果成立,程序运行if下边大括号内的内容,否则运行else下大括号的内容

    //情景剧一开始们,演员得自我介绍一下吧,流程不能省
    public function introduce()
    {
        if (empty($this->actors)) {
            error("大家好我是导演,男女主角偷偷约会还没结束,今天可能来不了了");
        }

        foreach ($this->actors as $actor) {
            $intro = "我是{$actor["name"]},";
            switch ($actor["sex"]) {
                case "女":
                    show($intro . "我是女主角。");
                    break;
                case "男":
                    show($intro . "我是男主角。");
                    break;
                default:
                    show($intro . "抱歉,我不知道我什么性别。");
                    break;
            }
        }
    }

empty()函数判断数组是否为空,空返回true,也就是正确的意思,此处没有else,代表如果不满足if的条件,程序直接往下走,不运行大括号内的代码。

foreach循环遍历数组,foreach($arr as $val),就是说对把$arr的所有成员依次赋值给$val,循环的次数就是$arr的长度

switch语句针对同一地方不同值进行选择,可以避免多次if else,性能和可读性也更好

switch后跟随的括号表示选择的变量

case后的值和冒号后的代码,表示对应值和要运行的代码,注意要添加break,表示跳出本次判断,不然代码会继续往下运行

defaul表示没有满足以上规定的case的时候,就运行default的代码

    //表演开始啦
    public function action()
    {
        if (empty($this->actors)) {
            error("演员临时有事,谢谢大家捧场");
        }
        //这是我们的剧本
        $play   = array();
        $play[] = "{$this->actors[0]["name"]} 和 {$this->actors[1]["name"]} 在街边相遇";
        $play[] = "{$this->actors[0]["name"]} 深情脉脉的看着 {$this->actors[1]["name"]}";
        $play[] = "以下省略一万字,请自行脑补......";
        $play[] = "全剧终";
        foreach ($play as $key => $val) {
            show("第{$key}幕");
            show($val);
        }
    }
    //不能草草结束,补个片尾曲
    public function end()
    {
        show("片尾曲,撒花完结");
    }

array()函数会返回一个数组,如果没有参数就是一个空数组,也是创建数组的一个方式

**$this->actors[0]["name"]**,返回的是$this->actors的第一个成员的key为name的值

foreach循环的第二种方式,as后边如果是 $key=>$val 这种,就会把数组的键赋值给$key,值赋值给$val,比上一种多了key可以使用

好啦,万事俱备,现在让它运行起来吧

$myphp = new MyPhp();
$myphp->actorJoin($persons);
$myphp->introduce();
$myphp->start();
$myphp->action();
$myphp->end();

new MyPhp()会创建一个MyPhp类型的类对象,让一个变量指向这个对象,就可以对这个对象的成员变量和成员方法进行调用和改动了。
看看在浏览器上的输出

改一改在命令行里让它动态跑一下看效果(怎么弄的不重要)

好啦,回顾一下文章开头的你会收获到什么,你都学会了吗?  
不要急,下一节会讲搭建php环境,你就可以自己演个情景剧啦
附:全部代码
";
}

//方法直接调用就好
show("hello " . $title);
//exit()方法让整个程序结束
//在""双引号内,可以直接用花括号包裹起来一个变量,这样在被调用的时候变量就会直接在字符串中替换为变量的值,单引号不可以哦
function error($str)
{
   echo "{$str}
"; exit(); } //用[]可以直接创建一个空的数组,然后一一赋值 $person1 = []; $person1["name"] = "高富帅"; $person1["sex"] = "男"; //也可以直接创建一个有值的数组 $person2 = ["name" => "白富美", "sex" => "女"]; //这是一个二维数组,也可以用同样的方式创建更多维的数组 $persons = [$person1, $person2]; //定义类用class关键字 class MyPhp { //成员变量直接用$符号声明就可以 //public private protected 是成员变量的访问控制权限 //null是php里的空指针的关键字 public $actors = null; public $music = "我心永恒"; //php中__开头(两个下划线)的函数都是默认自带的函数 //__construct是构造函数,初始化一个类对象的时候会调用这个方法 public function __construct() { $this->start(); } public function start() { //time()方法获取一个当前的时间戳 //date()方法接受两个参数,第一个是一个字符串表示格式化格式,第二个参数是一个时间戳,返回格式化之后的时间 $time = time(); show("时间:{$time}"); $date = date("Y-m-d h:m:s", $time); show("哦~一般人还是看日期好一点 {$date}"); //$this->music 调用成员变量,注意此时成员变量不要加$符号 show("播放片头曲~~{$this->music}"); } //演员加入 public function actorJoin($actorlist) { //is_array()方法判断参数变量是否是数组 //count()方法返回参数数组的长度 //if(){}else{}是条件语句语法,括号内的判断语句如果成立,程序运行if下边大括号内的内容,否则运行else下大括号的内容 if (is_array($actorlist) && count($actorlist) == 2) { $this->actors = $actorlist; } else { error("还有演员没有就位"); } } public function introduce() { //empty()函数判断数组是否为空,空返回true,也就是正确的意思 //此处没有else,代表如果不满足if的条件,程序直接往下走,不运行大括号内的代码。 if (empty($this->actors)) { error("大家好我是导演,男女主角偷偷约会还没结束,今天可能来不了了"); } //foreach循环遍历数组,foreach($arr as $val),就是说对把$arr的所有成员依次赋值给$val,循环的次数就是$arr的长度 foreach ($this->actors as $actor) { $intro = "我是{$actor["name"]},"; //switch语句针对同一地方不同值进行选择,可以避免多次if else,性能和可读性也更好 //switch后跟随的括号表示选择的变量,case后的值和冒号后的代码,表示对应值和要运行的代码,注意要添加break,表示跳出本次判断,不然代码会急需往下运行 //defaul表示没有满足以上规定的case的时候,就运行default的代码 switch ($actor["sex"]) { case "女": show($intro . "我是女主角。"); break; case "男": show($intro . "我是男主角。"); break; default: show($intro . "抱歉,我不知道我什么性别。"); break; } } } public function action() { if (empty($this->actors)) { error("演员临时有事,谢谢大家捧场"); } //array()函数会返回一个数组,如果没有参数就是一个空数组,也是创建数组的一个方式 //$this->actors[0]["name"] 返回的是$this->actors的第一个成员的name $play = array(); $play[] = "{$this->actors[0]["name"]} 和 {$this->actors[1]["name"]} 在街边相遇"; $play[] = "{$this->actors[0]["name"]} 深情脉脉的看着 {$this->actors[1]["name"]}"; $play[] = "以下省略一万字,请自行脑补......"; $play[] = "全剧终"; //foreach循环的第二种方式,as后边如果是 $key=>$val 这种,就会把数组的键赋值给$key,值赋值给$val,比上一种多了key可以使用 foreach ($play as $key => $val) { show("第{$key}幕"); show($val); } } public function end() { show("片尾曲,撒花完结"); } } $myphp = new MyPhp(); $myphp->actorJoin($persons); $myphp->introduce(); $myphp->start(); $myphp->action(); $myphp->end();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29936.html

相关文章

  • 文章带你极速入门phpphp原生实现登陆注册

    摘要:看下成果纯天然,绝不添加任何添加剂以及化学成分我就是喜欢纯天然,不接受任何反驳关于本文用原生的和做了一个登陆注册,大概是可以窥见一般开发的样子了。 看下成果 ps:纯天然h5,绝不添加任何添加剂(css)以及化学成分(js)( 这行session_start() 是开启session,必须在最开始写,保证我们可以使用session相关的功能 如果当前session里没有存用户的昵...

    Hancock_Xu 评论0 收藏0
  • 文章带你极速入门php(二)迅速搭建php环境

    摘要:另本文目标是迅速建立集成环境用来开发,如果想要分开一点点搭建,自行百度就好了。本文不赘述,自行百度就完事了下载地址,选中或者版即可,下载完后安装上就好。 前言 今天讲一下php在windows,mac,linux上的集成环境搭建,环境这个事得对号入座,windows用phpstudy,mac用mamp,linux用lnmp一键安装,直接跳转对应的地方看就好了。 另:本文目标是迅速建立...

    Jackwoo 评论0 收藏0
  • 带你入门 JavaScript ES6 (五) 集合

    摘要:一概述集合是引入的新的内置对象类型,其特点同数学意义的集合,即集合内所有元素不重复元素唯一。数组集合对比数组和集合,数组可以加入重复数据,而集合的所有元素是唯一的不允许重复。因此,适合临时存放一组对象,以及存放跟对象绑定的信息。 本文同步带你入门 带你入门 JavaScript ES6 (五) 集合,转载请注明出处。 前面我们学习了: for of 变量和扩展语法 块作用域变量和解构...

    BetaRabbit 评论0 收藏0
  • 带你入门 JavaScript ES6 (二)

    摘要:上一篇学习下一代语法一,我们学习了关于块作用域变量或常量声明和语法新的字符串拼接语法模版字面量数组元素或对象元素的解构赋值和对象字面量简写的相关知识。这便是扩展运算符的用途之一。 本文同步 带你入门 JavaScript ES6 (二),转载请注明出处。 上一篇学习下一代 JavaScript 语法: ES6 (一),我们学习了关于块作用域变量或常量声明 let 和 const 语法、...

    chanthuang 评论0 收藏0
  • 带你入门 JavaScript ES6 ()

    摘要:是国际组织于年月日发布的第六版,正式名为通常被成为或。二模版字面量提供一种简单实现表达式嵌套的字符串字面量操作,简而言之就是能够以简单的方法实现字符串拼接操作。 本文同步 带你入门 JavaScript ES6 (一),转载请注明出处。 ES6: 是 ECMA国际组织于 2015 年 6 月 17 日发布的 ECMAScript 第六版,正式名为 ECMAScript 2015,通常被...

    lindroid 评论0 收藏0

发表评论

0条评论

loostudy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<