年后第一节课,我们开始学习PHP。主要内容有:
一、PHP开发环境搭建。
安装谷歌浏览器,安装phpstrom,安装PHP工具箱。都是傻瓜操作,一路下一步。需要注意,PHP的版本切换为最新的,虚拟域名新建好后需要在host中添加相应的链接和域名(127.0.0.1 www.xxx.com)。
二、PHP工作原理
原理如图所示,客户端(用户操作的例如浏览器)通过发送合同谈判请求,然后web服务器(apache)接受http的请求与响应,开始对发过来的数据进行解析,它只认html,对非html例如php出现的话,他会交给PHP。exe进行解析,然后解析成html再返回给web服务器,web服务器然后将html文档给浏览器,浏览器解析成可视的网页供用户浏览。
三、PHP与html混编
注意只有php文件才能识别出里面的php'代码,然后出现混编时php标签应该闭合(<?php?>),echo输出html代码,也可以用heredoc输出大段html代码
四、变量
变量声明必须再开头加$,单行输出简写为<?= ?>,变量的特点可以被更新,可以被释放清空。
五、常量
特点:不能更新 不能删除 不受作用域限制
声明两种方式:define(‘变量名’, ‘值’) const 常量名 = 值;
两者区别:const定义的值不能为表达式,应为一个确定的值(不需运算)
六、数组
声明方式同js一样,有索引数组和关联数组,索引数组是将索引和值一一绑定,比较快捷缺点没有可读性;关联数组是将键值成对出现,通过键的名字可以了解值的用途;遍历for while 都可以,针对关联数组的foreach使用起来比较方便
七、单双引号的用法
单引号用来作为简单的字符串和变量拼接用;双引号可以解析变量 转义字符等 例如“<span>{$a}</span>”
八、数据类型
标量类型(单值类型)字符串 数字都是 还有布尔型,true用echo输出为1;gettype可以查看数据类型
复合类型(多值变量) 对象就是代表 通过实例化一个类声明一个对象 $obj = new strClass();
NULL类型 is_null判断是否为NULL类型
资源类型 is_resource判断
代码:
<?php // 标量类型 也是单值类型 就是一个变量里只有一个值 之前的数值 字符串都是 还有布尔型 $win = true; //输出后转换成1 echo $win; echo '<hr>'; //gettype可以查看类型 echo gettype($win); echo '<hr>'; //var_dump 可以查看详细情况 var_dump($win); echo '<hr>'; // 复合类型 多值变量 有对象 // 用标准类创建一个对象 $obj = new stdClass(); // 添加属性和方法 $obj->name = 'jij'; $obj->getName = function ($obj) { return $obj->name; }; echo $obj->name; echo '<br>'; //call_user_func 是通过第一个参数为回调函数来用 其他的参数就是回调函数的参数 echo call_user_func($obj->getName, $obj); echo '<br>'; echo call_user_func_array($obj->getName, [$obj]); echo '<hr>'; // NULL 资源类型 $rand; //错误 返回null 没有定义 var_dump($rand); echo '<br>'; $rand = null; // 判断是否为空 echo (is_null($rand)); echo '<hr>'; // 资源类型 $fp = fopen('demo01.html', 'r'); var_dump($fp); echo (is_resource($fp));
点击 "运行实例" 按钮查看在线实例
<!--html和php的混编--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><?php echo '员工管理系统'?></title> <style> table,th,td { border: 1px solid #666; padding: 8px; } table { border-collapse: collapse; width: 80%; text-align: center; margin: 30px auto; } thead tr:first-of-type { background-color: lightblue; } tbody tr:hover { background-color: #efefef; } table > caption { font-size: 1.2rem; margin-bottom: 15px; } table + p { text-align: center; } </style> </head> <body> <table> <caption>员工信息表</caption> <thead> <tr> <th>编号</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>邮箱</th> <th>密码</th> </tr> </thead> <tbody> <?php echo '<tr>'; echo '<td>1</td>'; echo '<td>猪哥</td>'; echo '<td>30</td>'; echo '<td>男</td>'; echo '<td>zg@php.cn</td>'; echo '<td>123456</td>'; echo ' </tr>'; ?> <?php echo '<tr> <td>2</td> <td>朱老师</td> <td>40</td> <td>男</td> <td>zls@php.cn</td> <td>123456</td> </tr>'; ?> <tr> <td>3</td> <td>西门大官人</td> <td>50</td> <td>男</td> <td>xmdgr@php.cn</td> <td>123456</td> </tr> <tr> <td>4</td> <td>灭绝师太</td> <td>60</td> <td>女</td> <td>mjst@php.cn</td> <td>123456</td> </tr> <tr> <td>5</td> <td>韦小宝</td> <td>20</td> <td>男</td> <td>wxb@php.cn</td> <td>123456</td> </tr> </tbody> </table> <p>总计: 5人</p> </body> </html> <!--这些html代码,使用php应该如何生成?-->
点击 "运行实例" 按钮查看在线实例
<?php //php中的注释分单行和多行 //这个是单行 /*这个是多行*/ /*php变量定义规则 *1 变量有类型和值两个属性 * 2 php的变量是弱类型 * 3 变量必须以$开头 * 4 变量名称必须是合法的名称: 字母/数字/下划线 开头不能是数字 * * */ //定义文档标题 $title = '员工信息系统'; //定义表格标题 $tabletitle = '员工信息表'; //定义员工总数 $total = 5; //变量可以被更新 $tabletitle = 'PHP讲师一览表'; //常量不会被更新 不会改变所以 像php中文网这样的不会轻易改变的可以设置为常量 define('SITE_NAME', 'PHP中文网'); //表格标题可以更新为 $tabletitle = '<a href="">'.SITE_NAME.'</a>讲师一览表'; //常量不允许被更新 //SITE_NAME = 'php.cn'; //变量可以被销毁 此时页面中显示错误变量未定义 //unset($tabletitle); //常量是不能被删除的 //unset(SITE_NAME); //数组同js中一样 $user = [1,'猪哥',30, '男', 'zg@php.cn','123456']; //echo $user[1]; //echo count($user); //关联数组 //我们需要关联数组通过键来明白里面值的用途 $user1 = [ 'id' => 1, 'name' => '猪哥哥', 'age' => 30, 'gender' => '男', 'email' => 'zg@php.cn', 'password' => '888888', ]; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><?= $title?></title> <style> table,th,td { border: 1px solid #666; padding: 8px; } table { border-collapse: collapse; width: 80%; text-align: center; margin: 30px auto; } thead tr:first-of-type { background-color: lightblue; } tbody tr:hover { background-color: #efefef; } table > caption { font-size: 1.2rem; margin-bottom: 15px; } table + p { text-align: center; } </style> </head> <body> <table> <caption> <?php // echo '<span style="color:red;">'.$tabletitle.'</span>' // 可以通过上面的字符串加连接符加变量的方式,也可以用下面的用双引号解析花括号的方式 echo "<span style='color:red;'>{$tabletitle}</span>" ?> </caption> <thead> <tr> <th>编号</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>邮箱</th> <th>密码</th> </tr> </thead> <tbody> <tr> <?php echo"<td>{$user[0]}</td> <td>{$user[1]}</td> <td>{$user[2]}</td> <td>{$user[3]}</td> <td>{$user[4]}</td> <td>{$user[5]}</td>"; ?> </tr> <!-- 可以用for循环遍历 --> <tr bgcolor="#deb887"> <?php for ($i=0;$i<count($user);$i++) { echo "<td>{$user[$i]}</td>"; } ?> </tr> <!-- 也可以用while循环 初始变量在外部 --> <tr bgcolor="aqua"> <?php $i = 0; while ($i < count($user)) { echo "<td>{$user[$i]}</td>"; $i++; } ?> </tr> <!-- 关联数组也可以用for循环 --> <tr bgcolor="#7fffd4"> <?php for ($i=0; $i<count($user1); $i++) { // current输出当前指针指向的值 echo '<td>'.current($user1).'</td>'; next($user1); } ?> </tr> <!-- for循环用另一种方法 --> <tr bgcolor="#9932cc"> <?php // 重置指针 reset($user1); for ($i=0; $i<count($user1); $i++) { // key方法返回当前指针指向的键名 $key = key($user1); echo "<td>{$user1[$key]}</td>"; next($user1); } ?> </tr> <!-- for循环遍历关联数组比较麻烦 用foreach --> <tr bgcolor="#a9a9a9"> <?php foreach ($user1 as $value) { echo "<td>{$value}</td>"; } ?> </tr> <tr> <td>2</td> <td>朱老师</td> <td>40</td> <td>男</td> <td>zls@php.cn</td> <td>123456</td> </tr> <tr> <td>3</td> <td>西门大官人</td> <td>50</td> <td>男</td> <td>xmdgr@php.cn</td> <td>123456</td> </tr> <tr> <td>4</td> <td>灭绝师太</td> <td>60</td> <td>女</td> <td>mjst@php.cn</td> <td>123456</td> </tr> <tr> <td>5</td> <td>韦小宝</td> <td>20</td> <td>男</td> <td>wxb@php.cn</td> <td>123456</td> </tr> </tbody> </table> <p>总计: 5人</p> </body> </html>
点击 "运行实例" 按钮查看在线实例
<?php // 标量类型 也是单值类型 就是一个变量里只有一个值 之前的数值 字符串都是 还有布尔型 $win = true; //输出后转换成1 echo $win; echo '<hr>'; //gettype可以查看类型 echo gettype($win); echo '<hr>'; //var_dump 可以查看详细情况 var_dump($win); echo '<hr>'; // 复合类型 多值变量 有对象 // 用标准类创建一个对象 $obj = new stdClass(); // 添加属性和方法 $obj->name = 'jij'; $obj->getName = function ($obj) { return $obj->name; }; echo $obj->name; echo '<br>'; //call_user_func 是通过第一个参数为回调函数来用 其他的参数就是回调函数的参数 echo call_user_func($obj->getName, $obj); echo '<br>'; echo call_user_func_array($obj->getName, [$obj]); echo '<hr>'; // NULL 资源类型 $rand; //错误 返回null 没有定义 var_dump($rand); echo '<br>'; $rand = null; // 判断是否为空 echo (is_null($rand)); echo '<hr>'; // 资源类型 $fp = fopen('demo01.html', 'r'); var_dump($fp); echo (is_resource($fp));
点击 "运行实例" 按钮查看在线实例
总结:
1、了解了php的工作原理,清楚了他作为后端的一种解释语言所具备的功能;
2、清楚了变量与常量的特点和具体区别
3、单双引号的区别具体化,比以前理解的更深刻
4、foreach确实再关联数组中应用方便,以前都这几个循环具体应用比较含糊