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设置中华人民共和国时区

  1. 找到php.ini配置文件,并找到date.timezone修改
#默认配置如下
;date.timezone = "Europe/Berlin"

#替换配置如下
date.timezone = PRC

#;表示注释
  1. 在需要用到这些时间函数的时候,在页面添加date_default_timezone_set(“PRC”);
  2. 在页头加上设置时区 ini_set(‘date.timezone’,’Asia/Shanghai’);

多站点虚拟主机配置

apache安装后,有一个默认站点,其配置都在apache的主配置文件(apache/conf/httpd.conf)中

主要包括如下几项:

  1. 站点域名:
ServerName  localhost

域名是可以设置的!

  1. 站点位置(文件夹位置):
DocumentRoot H:\itcast\class\bj-quanzhan4\amp\Apache\htdocs

站点位置是可以设置的!

  1. 站点文件夹的访问权限设置:

使用<Directory> ... </Directory>配置项来配置。

  1. 站点默认显示的网页(首页):
DirectoryIndex index.php  index.html

默认网页(首页)是可以设置的

网站文件夹访问权限的设置

文件夹的访问权限的设置形式如下所示

<Directory “要设置权限的文件夹路径”>
	Options设置项
	AllowOverride设置项
	Require权限设置项
</Directory>

各项解释如下:

  • Options:用于设置一些系统选项,通常window系统中就用Indexes就可以了。

    • Options Indexes //表示允许列出目录结构(如果没有可显示的网页)
  • AllowOverride:用于设置“可覆盖性”,即是否允许在项目文件中覆盖这里的访问权限设置:

    • AllowOverride All //表示可覆盖
    • AllowOverride None //表示不可覆盖
  • Require:用于设置可访问权限,常用的有:

  1. 允许所有来源的访问:——推荐
Require All granted
  1. 拒绝所有来源的访问:——网站需要临时关闭时使用
Require All denied
  1. 允许所有但拒绝部分来源的访问:
<RequireAll>
	Require all granted
	Require not ip 192.168.1.102 192.168.1.103
</RequireAll>
  1. 拒绝所有但允许部分来源的访问:
<RequireAny>
  Require all denied
  Require ip 192.168.1.102 192.168.1.103
</RequireAny>

典型权限设置示例

<Directoryh:/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添加域名绑定(修改本地域名服务器)

image-20210219105212104

一个文件夹就是一个站点

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这个变量中去。

img

变量的另一个角度理解:

变量是一个“容器”,是一个“盒子”,是一个可以存放数据的位置——内存空间。

也可以这样去理解:

内存(条)中分割出很多很多的小格子,每个格子都有一个编号地址(所谓内存地址)。

其中存储了数据的格子上有一定的标记名(变量名),并存放了对应的数据。

图示如下:

img

对应代码如下:

$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 = “张三不疯”;

变量赋值的本质是:将变量名,跟一个数据“建立关联(联系)”,图示如下:

img

此时,对该变量的操作,也就是对该内存地址上的数据的操作。

1.3.2. 取值——常见操作

取值,就是,从变量这个容器中拿到其中存储的数据(值);

取值无处不在:凡是使用到变量,并在该位置上,需要一个“数据”的时候,就会发生取值操作

1.3.3. 判断变量isset()

就是判断一个“变量名”是否里面存储了数据!

判断的结果是:true(真,表示有),或者false(假,表示没有)。

使用这个语法来判断:isset( $变量名 );

还有一个特殊的赋值,赋值后,变量中也没有数据,如下:

$v5 = null; //null是一个特殊的“数据”(值),该数据的含义是:没有数据。

即此时判断 isset($v5)的结果是“false”。

1.3.4. 删除/销毁变量unset()

当一个变量中存储了数据,我们也可以去销毁(删除)它,语法如下:

unset( $变量名 )。

删除变量的本质是:断开变量名跟其关联过的那个数据之间的“联系”,图示如下:

img

此时,该变量就不再指向某个数据了,其isset()判断的结果为false。

img

1.4. 变量传值(难点)

1.4.1. 含义:

是指,将一个变量的值“传递”给另一个变量的方式问题。

形式上,就是一个变量在等号左边,一个变量在等号右边,就表示将右边变量的值传给左边的变量。

有且只有两种传数据的方式:值传递,和引用传递。

1.4.2. 值传递:

就是将右边变量的“数据值”本身,复制一份,然后赋值给左边变量。

形式如下:

$变量1 = $变量2;

举例:

$v1 = 1;

$v2 = $v1;

可见:

值传递之后,两个变量互不影响,相互独立,没有关系了!

其原理如下所示:

img

可见,此时两个变量在赋值之后,就相互独立,各自有自己的存放空间。改变一个,另一个不受影响。

代码演示:

img

1.4.3. 引用传递:

是将右边变量对数据的引用关系,传给左边的变量。

img

代码演示:

img

1.5. 预定义变量

在PHP语言内部,有一些(也就10来个)变量,是现成的,直接可以使用,这就是所谓预定义变量。

我们要做的是事情就是:理解该变量是什么意思,以及怎么用!

1.5.1. $_GET变量

代表浏览器表单通过“get”方式提交的所有数据(集),可以称为“get数据”。

也可以理解为:

$_GET变量里面会“自动存储”(保存/装载)提交到某个文件中的GET数据。

而GET数据,是在一个页面以“get”方式请求的时候提交的数据。

代码演示:

制作一个表单,有两个输入框,可以输出数字,并提交。

到另一个页面(文件)中,计算这两个数字的和!

img

对该加法计算的一个改进:

1.5.2. $_POST

代表浏览器表单通过“post”方式提交的所有数据(集),可以称为“POST数据”。

也可以理解为:

$_POST变量里面会“自动存储”(保存/装载)提交到某个文件中的POST数据。

而POST数据,是在一个表单中以“post”方式提交的数据。

代码演示:

有个表单,两个输入框,可以填写数字,有一个“提交按钮”,点击提交,可以计算他们的和并输出。

img

扩展(提交给自己!):

img

1.5.3. $_REQUEST

代表浏览器通过“get”方式 或 “post”方式提交的数据的合集。

即:它既能接收到get过来的数据,也能接收到post过来的数据!

通常,一个表单,只提交一种形式的数据,要么get数据,要么post数据!

代码演示:

但,有一个情况,提交post数据的同时,也可以提交get数据:

img


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!其他问题请通过下方微信联系!

 目录