PHP学习
本文最后更新于:2 年前
PHP开发环境
- MacOS 10.15.7
- MAMP集成环境
- Apache
- PHP-7.4.2
- Mysql-5.7
PHP基础配置
配置Apache使Apache可以调用PHP
#添加PHP模块到本Apache中,分为两步
#加载PHP7模块
LoadModule php7_module /Applications/MAMP/bin/php/php7.4.2/modules/libphp7.so
#添加(设定)PHP7文件的后缀
AddType application/x-httpd-php .php .phtml
#设置php.ini文件的路径(只要路径,不要文件名,但是文件名一定要为php.ini)
PHPIniDir "/Applications/MAMP/conf/php7.4.2"
PHP设置中华人民共和国时区
- 找到php.ini配置文件,并找到date.timezone修改
#默认配置如下
;date.timezone = "Europe/Berlin"
#替换配置如下
date.timezone = PRC
#;表示注释
- 在需要用到这些时间函数的时候,在页面添加
date_default_timezone_set(“PRC”);
- 在页头加上设置时区
ini_set(‘date.timezone’,’Asia/Shanghai’);
多站点虚拟主机配置
apache安装后,有一个默认站点,其配置都在apache的主配置文件(apache/conf/httpd.conf)中
主要包括如下几项:
- 站点域名:
ServerName localhost
域名是可以设置的!
- 站点位置(文件夹位置):
DocumentRoot H:\itcast\class\bj-quanzhan4\amp\Apache\htdocs
站点位置是可以设置的!
- 站点文件夹的访问权限设置:
使用<Directory> ... </Directory>
配置项来配置。
- 站点默认显示的网页(首页):
DirectoryIndex index.php index.html
默认网页(首页)是可以设置的
网站文件夹访问权限的设置
文件夹的访问权限的设置形式如下所示
<Directory “要设置权限的文件夹路径”>
Options设置项
AllowOverride设置项
Require权限设置项
</Directory>
各项解释如下:
Options:用于设置一些系统选项,通常window系统中就用Indexes就可以了。
- Options Indexes //表示允许列出目录结构(如果没有可显示的网页)
AllowOverride:用于设置“可覆盖性”,即是否允许在项目文件中覆盖这里的访问权限设置:
- AllowOverride All //表示可覆盖
- AllowOverride None //表示不可覆盖
Require:用于设置可访问权限,常用的有:
- 允许所有来源的访问:——推荐
Require All granted
- 拒绝所有来源的访问:——网站需要临时关闭时使用
Require All denied
- 允许所有但拒绝部分来源的访问:
<RequireAll>
Require all granted
Require not ip 192.168.1.102 192.168.1.103
</RequireAll>
- 拒绝所有但允许部分来源的访问:
<RequireAny>
Require all denied
Require ip 192.168.1.102 192.168.1.103
</RequireAny>
典型权限设置示例
<Directory “h:/itcast/php60/wamp/www”>
Options Indexes
AllowOverride All
Require All granted
</Directory>
网站默认网页的设置
<IfModule dir_module>
DirectoryIndex index.html index.php
<IfModule perl_module>
DirectoryIndex index.pl
</IfModule>
<IfModule wsgi_module>
DirectoryIndex index.wsgi index.py
</IfModule>
DirectoryIndex index.php index.html default.php default.html
</IfModule>
多站点配置
在Apache的主配置文件中引入虚拟主机配置文件
# Virtual hosts(将下方语句前的#去掉)
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
在虚拟主机配置文件(httpd-vhost.conf)中挨个站点进行配置
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
ServerName dummy-host.example.com
<Directory "">
Options Indexes
Require all Granted
DirectoryIndex index.php index.html
</Directory>
</VirtualHost>
#实际开发配置
<VirtualHost *:80>
ServerName dummy-host.example.com
DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
<Directory "/Applications/MAMP/Library/docs/dummy-host.example.com">
Options Indexes
AllowOverride All
Require all Granted
</Directory>
DirectoryIndex index.php index.html
</VirtualHost>
- DocumentRoot 站点位置
- ServerName 主机名
- Options 表示可以列出目录
- Require 表示对所有请求都允许访问
- DirectoryIndex 表示默认首页
- AllowOverride 表示允许权限覆盖
配置文件修改之后请记得及时重启
PHP的基本设置
设置php.ini的位置,在Apache的主配置文件中(httpd.conf)
PHPIniDir "php目录"
设置PHP的运行时区,在php.ini中设置
date.timezone = PRC
PHP模块设置(以mysqli模块为例)
#设置PHP的模块所在的位置/目录
extension_dir = "php目录/ext"
#开启所需要的模块
extension = php_muysqli.dll
开发环境简单配置
使用MAMP-Pro直接进行Apache、MySQL、Redis的配置,以及多站点配置
![image-20210219104858617](/Users/pixiao/Library/Application Support/typora-user-images/image-20210219104858617.png)
多站点配置好了之后需要到本地的host添加域名绑定(修改本地域名服务器)
一个文件夹就是一个站点
PHP基础
1.PHP基本语法
1.1.PHP标记
PHP语言,是一种可以嵌入到“html”代码中的后台处理语言(程序)
有以下几种标记形式,只推荐第一种。
<?php php****代码写在这里..... ?>
这是推荐写法!
<script language="php" > php代码写在这里..... </script>
<? php代码写在这里..... ?>
// 需要到php.ini中进行配置:short_open_tag = On //默认为Off,表示不能用该形式。
纯PHP代码:可以省略标记结尾符。
1.2.PHP语句结束符
英文;
是PHP每条语句的结束符
1.3.PHP注释
1.3.1. 单行注释:
两个斜杠: //斜杠后面的部分就是注释内容,PHP语言不会去处理它(不执行)
<?php
这里是PHP
// 这是一条注释
?>
1.3.2. 多行注释:
<?php
这是多行PHP注释
/*
这是注释内容。。。
可以写多行
*/
这是一行PHP注释
/* 当然写一行也是可以的 */
?>
重要的事情是:注释是写程序的非常重要的因素和习惯!
1. 变量
1.1. 含义与定义形式
就是使用一个“标记符号”(标识符),来代表某个数据。
类比:
用一个名字(姓名),来代表某个人。
用一个身份证号码,来代表某个人。。。
用一个变量,就可以理解为“使用一个数据”。
既然是变量,就是该数据时可以改变的一种数据。
对应常量:就是一种不可以(不允许)改变的数据。
定义形式: $变量名 = 具体的数据;
特别注意:变量名区分大小写!!!!!!
举例:
$v1 = 123; //这里的等于号(=),不是数学上的等于(相等),而是“赋值”的意思。
//其本质含义是:将123这个数据,放到v1这个变量中去。
变量的另一个角度理解:
变量是一个“容器”,是一个“盒子”,是一个可以存放数据的位置——内存空间。
也可以这样去理解:
内存(条)中分割出很多很多的小格子,每个格子都有一个编号地址(所谓内存地址)。
其中存储了数据的格子上有一定的标记名(变量名),并存放了对应的数据。
图示如下:
对应代码如下:
$a = 200;
$b = 100;
其中,“0xA01”,“0xA02”代表内存地址。内存地址其实是我们看不到的,由系统分配。
1.2. 变量的命名规则
1.2.1. 基本规则(明规则)
就是给一个变量命名的时候,要遵循的规则。
1,构成:字母、数字、下划线;
2,开头:字母或下划线;
3,注意:变量名不要跟系统中的“关键字”(即语法所用单词)重复——关键字不多,也就几十个。
后续,我们还会学到另外一些语言或场合下有关命名的规则,其规则,跟上述几乎差不多!
1.2.2. 行业规则(潜规则)
通常,尽量将变量命名为“见名知意”。
尽量用更容易理解的单词(或拼音)去表示一个数据,很多时候可以使用“多个单词(拼音)”。
比如:
ChildAge, YungerAge, ParentHouse, MyParentHouse, MyParentHousePrice
此时,通常有两个行业中的惯例规则:
骆驼命名法(小驼峰命名法):第一个单词首字母小写,其余单词首字母大写。
childAge, yungerAge, parentHouse, myParentHouse, myParentHousePrice
帕斯卡命名法(大驼峰命名法):所有单词都首字母大写。
ChildAge, YungerAge, ParentHouse, MyParentHouse, MyParentHousePrice
1.3. 变量的4种基本操作
任何一个变量,有且只有4种对变量的“操作”:
1.3.1. 赋值——常见操作
将一个数据(值)放入一个变量中。
$name = “张三丰”;
几乎所有变量要想后续正常使用,第一件事就是“赋值”。
变量初始赋值后,可以后续再去重新赋值——这就是修改了变量的值,比如:
$name = “张三不疯”;
变量赋值的本质是:将变量名,跟一个数据“建立关联(联系)”,图示如下:
此时,对该变量的操作,也就是对该内存地址上的数据的操作。
1.3.2. 取值——常见操作
取值,就是,从变量这个容器中拿到其中存储的数据(值);
取值无处不在:凡是使用到变量,并在该位置上,需要一个“数据”的时候,就会发生取值操作
1.3.3. 判断变量isset()
就是判断一个“变量名”是否里面存储了数据!
判断的结果是:true(真,表示有),或者false(假,表示没有)。
使用这个语法来判断:isset( $变量名 );
还有一个特殊的赋值,赋值后,变量中也没有数据,如下:
$v5 = null; //null是一个特殊的“数据”(值),该数据的含义是:没有数据。
即此时判断 isset($v5)的结果是“false”。
1.3.4. 删除/销毁变量unset()
当一个变量中存储了数据,我们也可以去销毁(删除)它,语法如下:
unset( $变量名 )。
删除变量的本质是:断开变量名跟其关联过的那个数据之间的“联系”,图示如下:
此时,该变量就不再指向某个数据了,其isset()判断的结果为false。
1.4. 变量传值(难点)
1.4.1. 含义:
是指,将一个变量的值“传递”给另一个变量的方式问题。
形式上,就是一个变量在等号左边,一个变量在等号右边,就表示将右边变量的值传给左边的变量。
有且只有两种传数据的方式:值传递,和引用传递。
1.4.2. 值传递:
就是将右边变量的“数据值”本身,复制一份,然后赋值给左边变量。
形式如下:
$变量1 = $变量2;
举例:
$v1 = 1;
$v2 = $v1;
可见:
值传递之后,两个变量互不影响,相互独立,没有关系了!
其原理如下所示:
可见,此时两个变量在赋值之后,就相互独立,各自有自己的存放空间。改变一个,另一个不受影响。
代码演示:
1.4.3. 引用传递:
是将右边变量对数据的引用关系,传给左边的变量。
代码演示:
1.5. 预定义变量
在PHP语言内部,有一些(也就10来个)变量,是现成的,直接可以使用,这就是所谓预定义变量。
我们要做的是事情就是:理解该变量是什么意思,以及怎么用!
1.5.1. $_GET变量
代表浏览器表单通过“get”方式提交的所有数据(集),可以称为“get数据”。
也可以理解为:
$_GET变量里面会“自动存储”(保存/装载)提交到某个文件中的GET数据。
而GET数据,是在一个页面以“get”方式请求的时候提交的数据。
代码演示:
制作一个表单,有两个输入框,可以输出数字,并提交。
到另一个页面(文件)中,计算这两个数字的和!
对该加法计算的一个改进:
1.5.2. $_POST
代表浏览器表单通过“post”方式提交的所有数据(集),可以称为“POST数据”。
也可以理解为:
$_POST变量里面会“自动存储”(保存/装载)提交到某个文件中的POST数据。
而POST数据,是在一个表单中以“post”方式提交的数据。
代码演示:
有个表单,两个输入框,可以填写数字,有一个“提交按钮”,点击提交,可以计算他们的和并输出。
扩展(提交给自己!):
1.5.3. $_REQUEST
代表浏览器通过“get”方式 或 “post”方式提交的数据的合集。
即:它既能接收到get过来的数据,也能接收到post过来的数据!
通常,一个表单,只提交一种形式的数据,要么get数据,要么post数据!
代码演示:
但,有一个情况,提交post数据的同时,也可以提交get数据:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!其他问题请通过下方微信联系!