初识 PHP 运行原理及数据类型
在 Windows 下选择一个自己喜欢的集成环境
windows 下可使用的面板非常多,但是好用的其实没有几个,这里写三个,我自己用的是 phpEnv
小皮面板(phpstudy):这货原来叫 phpstudy,时间也很长了,功能很丰富,界面并不好看,一直在更新。但是稳定性就我个人感觉来说真不行,小问题非常多,我用的时间最久,由于不稳定让我删除的次数最多,当然这是我个人感觉
UPUPW:功能比较强大,界面也比小皮好看,但是每次创建站点后自定义的域名软件不会帮你设置下 hosts 文件,还要自己去设置,自己懒不想设置;如果你也懒也别用。不是说这种点小事自己还懒,因为面板很多,我肯定选择最让我用的最舒服的。精力放在学习代码上。
phpEnv:界面非常简单,但是功能都有。绑定了自定义域名也不用手动配置 hosts,稳定性和 upupw 也差不多,目前一直在用的集成。
[]
PHP 是怎么运行的?
有了 php 集成环境后我们就好奇 php 是怎么运行的呢
- 我们访问网站其实就是访问的一台装了 web 环境的一台电脑称之为服务器,服务器 web 环境有 nginx 和 apache,但是这两个只是将 web 服务器中的 html 和 js,CSS 等发回给用户浏览,由浏览器自己解析
- 如果访问的是.Php 文件,那么会有 web 服务器中的 Php 引擎也就是解析器来处理,处理完了之后转为 html 代码发回给 nginx 或者 apache
- 如果 php 文件中是 html 和 php 混编,只会把<?php…?>php 标签内的内容发给 php 解析器
- 如下 php 引擎只会执行 php 标签中的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>将PHP写到HTML中</title>
</head>
<body>
<?php
// 一旦html文档中出现了php标签,那么这个文档的扩展名必须是php
//单号注释
/*
多行
注释
*/
// 短标签:需要在php配置文件中打开short_open_tag = on
echo 'hello,这是PHP输出的代码';
?>
<?php
echo '<h3>短标签输出的内容</h3>'
//如果只有一行语句,或者是最后一行代码可以不加;号
?>
<?='不加echo 输出的内容'?>
<?php
$str = '<h2 style="color:blue">短标签输出的内容</h2>';
?>
<?= $str ?>
<!-- 自定义输出格式 -->
<?php
echo '<p>hello world</p>';//echo 可以输出多个值并且没有返回值
print '<p>hello world</p>'; //print 只能输入一个值,有返回值
echo print '<p>hello world</p><hr>';
// printf (模板,要输出的数据)
// 1+2=3
printf('<hr>%d+%d=%d',1,2,1+2);
// %d 表示整数,%s表示字符串,%f表示浮点数
?>
<!-- sprintf,内容不输出,只返回
vprintf,支持数组参数
vsprintf,支持数组参数,内容不输出,只返回 -->
</body>
</html>
php 的数据类型
php 数据类型用什么来检测?
- 我们可以用 php 内置的 gettype()函数来检测数据类型
- 用 var_export 来得到一个变量值 的类型的“字符串表达”
- var_dump PHP 内置函数,可同时完成上面两个函数的功能
$passed = true;
echo $passed;
// 此显示为1,浏览器只能显示字符串,ECHO的时候会自动转为字符串,转为字符串就是“1”
// 可以使用gettype来获取数据类型
echo gettype($passed);
//如果想得到一个变量值 的类型的“字符串表达”
var_export($passed,true);
// 还可以用来输出PHP源代码
$res = var_export($passed,true);
echo $res;
// 同时看类型和值
echo '<hr>type:'.gettype($passed).'<br>value:'.var_export($passed,true);
//var_dump()内置的函数,既能看到值也能看到函数
echo "<hr>";
var_dump($passed); //主要用来调试,不能用于生产环境。可以输出多个值
基本类型:布尔类型、字符串类型、整数型、浮点数
布尔类型
如上代码中的变量
$passed
就是一个布尔类型,它的值要么为 false,要么为 true
数值型
数值型有两种,整型和浮点型
$price = 89.9;//这是浮点型
$number = 3; //这是整型
字符串型
必须要使用“单引号”或者“双引号”作为定界符
$name = "admin";
$email = "admin@php.cn";
echo '<hr>name:'.$name.'email:'.$email.'<hr>';
// echo 'hello '你好''; 这里会报错
// 1.使用与定界符不同的引号类型
echo 'hello "你好"';
//2.将字符串内部的定界符号进行转义,转为失去定界符作用的普通字符
echo 'hello \'你好\'';
// \t:水平制表位,其实就是tab键,四个空格
echo "c:\web\table\index.html";
// 这里就需要将反斜线自身进行转义
echo "c:\\web\\table\\index.html";
复合类型:数组、对象
数组
$str = [1,"牛年大吉","5.5","false"];
//数组索引默认从0开始递增
echo 'id = ', $str[0],'<br>';
$str[4] = true;
$str[] = 243;
// 如果不写索引他会自动追加到最后一个索引
$lecture = [];
$lecture[]="111";
$lecture[]="222";
$lecture[]="333";
//数字索引依赖顺序,可以将数组成员的键名改为字符串,这样的话可以随机访问
$str = ['id'=>1,'ta'=>"牛年大吉",'num'=>"5.5",'is'=>"false"];
echo $str['id'],$str['ta'];
print_r($str);
echo '<pre>'.print_r($str).'</pre>';
对象
类与对象:在不引起误会的场景下,可以混用;对象与实例:实例是对象的同义词
$a = 1;
$b = 2;
function sum($a,$b){
return $a .'+'.$b.'='.($a+$b);
}
echo sum($a,$b);
//写个容器将上面的代码进行封装,这个窗口就是:对象
//使用对象的本质是代码复用
class Demo{
//变量=》属性
private $a = 1;
private $b = 2;
public function sum(){
return $this->a .'+'.$this->b.'='.($this->a+$this->b);
}
}
$obj = new Demo();
echo $obj->sum(),"<br>";