波哥教你学PHP7之二:分析我们的第一个程序语法、注释、代码规范、UTF8与中文显示支持、HTML混编

分析我们的第一个程序

<?php
    echo 'This is my first PHP program.';

第一行代码为

<?php

所有的PHP代码都需要包含在 <?php?> 之间,第一个为起始标签告诉PHP开始解析,第二个为结束标签告诉PHP停止解析。PHP 也允许使用短标记 <??>,但不鼓励使用。

大家可能会说,你这个代码有问题,没有结束标签。PHP官方解释如下。

如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白。

第二行代码为

    echo 'This is my first PHP program.';

其中 echo 作用为输出一个或多个字符串,它不是一个函数,它是一个语言结构,所以没有括号。
PHP 需要在每个语句后用分号;结束指令。
代码中的单引号''包起来的部分表示它是一个字符串,当然,也可以用双引号来表示。
如下为使用 echo 输出多个字符串,使用了单双引号。

    echo "This", ' ', "is my first PHP program.";

在 echo 中使用双引号时,区别于单引号的时,可以使用变量,或者一些转义字符,如命令行下的换行符等,建立我们的第二个程序 example_02.php ,并在命令行下运行如下命令,原因是\n换行在命令行下才会换行,在浏览器上并不会换行。

<?php
    $name = "Smith";
    echo "My name is $name.\nHer name is Mary.\n";

输出的结果如下:

My name is Smith.
Her name is Mary.

小伙伴们可能会想,我如果要输出单引号、双引号怎么办?示例如下。

<?php
    echo "She Said \"I'm a Girl\".\n";
    echo 'She Said "I\'m a Girl".\n';

输出结果如下:

She Said "I'm a Girl".
She Said "I'm a Girl".\n

我们可以在双引号里用单引号,可以在单引号用双引号。如果要在双引号里用双引号需要用\"来转义,如果在单引号里用单引号也要用\'来转义。细心的小伙伴可能注意到结果里有一个\n,原因很简单,在单引号里的\r,\n等特殊的ASCII字符时,不进行任何处理,只是当成字符串。

注释

注释就像说明书,让别人知道你要做什么。注释应该用简短的语言清晰的描述你的意图。下面用一个示例来说明一下。

<?php
/**
 * 演示注释的用法(注释一)
 *
 * @author      波哥
 * @date        2017-04-19
 * @copyright   Copyright(c) 2017
 */

/**
 * 取钱(注释一)
 *
 * @param   int     $amount     取钱的金额
 *
 * @return  bool
 */
function getMoney($amount) {
    /* 取钱不能为负数或者零 (注释三) */
    if ($amount <= 0) {
        return false;
    }

    /* 如果钱不够 (注释四) */
    if ($exist < $amount) {
        return false;
    } else {
        // 减少该账户现有金额  (注释五) 
        return true;
    }
}

/*
本文件结束
这是多行注释
也是无用注释(注释六)
*/

没有注释的代码是世界上最垃圾的代码。有人说,我写的代码,不需要注释,我都记得。是的,现在你能记住,N年之后呢?如果我们接手别人的代码,一行注释也没有,然后代码量又特别大,我们会是怎么样的心情呢?所以请大家重视注释。

多行注释用 /* */ 包裹,单行也可以用 /* */, 更多的是 //,也可以用 '#',但不推荐。

  1. 注释一,为文件或者类注释,告诉大家我这个文件或者类是做什么的。
  2. 注释二,为方法注释,@param int $amount 取钱的金额表示 取钱的金额 只接收整数类型 @return bool表示返回值为布尔类型。
  3. 注释三、四、五均为单行注释。一般用来说明一下该处代码的意图。
  4. 注释六,属于无用注释,不需要写。

代码规范

上面的例子里,比如方法名,比如注释,比如缩进,比如if前面的四个空格,后面的一个空格,这些都是代码规范,好的代码规范给你的感觉就像国庆阅兵的方阵。

好的代码规范会让你很快融入到对方的代码逻辑中。越是多人协作,就越需要统一的代码规范来约束。

UTF8与中文显示支持

从国际化的角度上来讲,我是强烈建议大家用UTF8字符集,很多GBK和GB2312的项目也越来越多的迁移到了UTF8上来。

我们使用Sublime Text 3新建一个example_03.php,输入如下代码

<?php
    echo '我的名字叫张三';

保存时编辑器左下角会有如下图所示,可以清晰的看到是UTF8。如果不确定,请文件/File->Set File Encoding to->UTF8

UTF8格式

Ctrl + B 可以看到没有乱码,可以正常输出。

如果在浏览器里,可能会有乱码出现,如下图:

乱码

原因是浏览器不知道以什么字符集来显示,那么我们要明确的告知它以UTF8来显示,在 example_03.php中加上一段html代码。

<?php
    echo '<meta charset="utf-8">'; /* 告诉浏览器我们要用utf-8 */
    echo '我的名字叫张三';

HTML混编

新建 example_04.php 输入如下内容,并在浏览器中打开

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title><?php echo '我是一个HTML与PHP的混合页面'; ?></title>
</head>
<body>
    <?php echo '<b>我被加粗了</b>'; ?>
    <?php echo '<p>我换行了</p>'; ?>
</body>
</html>

我们可以看到,我们的PHP代码实际上是嵌入在了HTML代码中,最后命名成了example_04.php

混编

右键->查看网页源代码

源代码

我们也可以把html用PHP来全部输出,如下 example_05.php,它的结果和 example_04.php 完全一样。

<?php
    echo '<!DOCTYPE html>';
    echo '<html>';
    echo '<head>';
    echo '<meta charset="utf-8">';
    echo '<title>我是一个HTML与PHP的混合页面</title>';
    echo '</head>';
    echo '<body>';
    echo '<b>我被加粗了</b>';
    echo '<p>我换行了</p>';
    echo '</body>';
    echo '</html>';

动态网站的原理就是PHP、JAVA、.NET等语言把数据获取,组合成HTML代码,输出,然后我们的浏览器解析成我们肉眼看到的精美页面。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 3,080评论 4 97
  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 9,013评论 0 16
  • 起风了 吹起起沙尘 迷了眼 揉着揉着就揉出了泪 沉默 沉默 …… "what are you doing?" 请在...
    狗狗我的独家记忆阅读 391评论 1 3
  • 小时候我特别喜欢狗,家里还曾经养过一条叫小黑的狗,每天我放学的时候都会跑到村里的学校门口等我,叼着我的书包,...
    7c5489ad8902阅读 668评论 0 1