php 入门基础

技术 · 2023-07-03

[TOC]

在最近使用typecho 中对页面的中的部分功能进行了二次开发,所以将很久不用的php基础知识又重新学了一遍。上一次用还是在2013年用thinks php 开发海淘的电商网站。

0 语法变量

PHP 是一门弱类型语言,不必向 PHP 声明该变量的数据类型,会根据变量的值,自动把变量转换为正确的数据类型。PHP 脚本可以放在文档中的任何位置, 以 <?php 开始,以 ?> 结束:
// 单行注释/* 多行注释*/echo - 可以输出一个或多个字符串(用,隔开),无返回值[推]、print - 只允许输出一个字符串,返回值总为 1

一 基本数据类型8种

四种标量类型:boolean (布尔型逻辑型)、int (整型)、float (浮点型, 也称作double)、 string (字符串)   
两种复合类型:array (数组)、object (对象)   
两种特殊类型:resource (资源)、 null (NULL)

二 运算符7种

逻辑运算符:and 与、or 或、xor 异或、&& 与、|| 或、! 非、
算数运算符:+-*/%++--, 加\减\乘\除\求余数\加加\减减
字符串运算符: .左右参数连接,将两个字符串链接起来
赋值运算符:+=-=*=/=%=.= 右边参数附加到左边
比较运算符:>>=<<=== 等于、!= 不等于、<> 不等于、=== 值或类型全等于、!== 值或类型不等于、1>0?'true':'false' 三元运算
执行运算符:``、shell_exec()
错误抑制符:@

三 流程控制

关键字:breakcontinueexit/diegoto

四 变量和函数

1.变量

$ 符号开头,其后是变量的名称,对大小写敏感!(全局变量global $  、 &$), 变量名必须以字母或者下划线字符开始, 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ ),
变量名不能包含空格

2.常量

请用define(name,value,nocase) 函数-它的三个参数:(类常量const),name名称必选,value值必选,nocase可选-是否对大小写不敏感 默认是false敏感!
常量在整个脚本中可用

魔术常量:
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。如:“ E:\wamp\www\test\index.php ”
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。
__TRAIT__ Trait 名包括其被声明的作用区域
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)
__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

3.作用域

PHP 有四种不同的变量作用域:
local 函数内部声明的变量是局部变量,仅能在函数内部访问
global 所有函数外部定义的变量,拥有全局作用域。在一个函数中访问一个全局变量,需要使用 global 关键字如: global $x,$y;
static
parameter

4.预定义变量

PHP 超级全局变量列表:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

1)超全局对象:$_SERVER

它是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中项目由Web服务器创建。但是不同的服务器提供的项目不一定都是全部项目,有些会忽略,使用时应该查阅相关服务器规范或说明。可以使用这个对象来查阅服务器和客户端的信息。

服务器信息获取

获取主机名:$_SERVER["SERVER_NAME"];
获取服务器软件信息:$_SERVER["SERVER_SOFTWARE"];
获取服务器文件(向客户端返回的文件)根路径:$_SERVER["DOCUMENT_ROOT"];
获取http主机名,结果和获取主机名一样:$_SERVER["HTTP_HOST"];
获取当前脚本(执行该 $_SERVER[......] 语句所在的php文件)的路径:$_SERVER["SCRIPT_NAME"];
获取当前脚本的绝对路径:$_SERVER["SCRIPT_FILENAME"];
获取当前页面路径,结果和 $_SERVER["SCRIPT_NAME"] 一样:$_SERVER["PHP_SELF"];

客户端信息获取

获取客户端信息,一般是浏览器信息:$_SERVER["HTTP_USER_AGENT"];
获取客户端协议头信息:$_SERVER["REMOTE_ADDR"];
获取客户端端口号:$_SERVER["REMOTE_PORT"];

2)$_GET$_POST的使用

$_SERVER一样属于全局对象。用于请求获取从前台返回的数据

$_REQUEST包含了$_GET$_POST两者的作用,所以使用它时,就不用担心method的类型选择的是什么了。

常用的还有$_SERVER["QUEST_STRING"],它可以获取客户端get请求url的?后面所带的参数。

4.函数:定义函数使用function关键字,函数的命名主要有三种方式:
Camel Case:小驼峰命名法,myFunction()
Lower Case:下划线命名法,my_function()
Pascal Case:大驼峰命名法,MyFunction()

function myName($a) {
  被执行的函数代码;//默认return null;
}

传参和返回值与其他编程语言一样,只是php的形参都是多了一个$符号,

5、字符串函数:

substr():返回字符串的一部分,

strlen():返回字符串长度,

strpos():查找字符串中某字符第一次出现的位,

strrpos():查找字符串中某字符最后一次出现的位置,

trim():去除首尾空格,

strtoupper():将字符串转为大写,

strtolower():将字符串转为小写,

ucwords():将每个单词的首字母转成大写,

str_replace():替换字符串中所匹配的内容

is_string():判断是不是字符串,

gzcompress():压缩字符串,

gzuncompress():解压字符串

五 数组

表达式:$arr=array(); //数组打印 print_r($arr);

索引数组:$car=array(1,2,3),所以默认从0开始,长度,count($car)

遍历:for($x=0;x<count($car);$x++){}

关联数组:

$age=array("Bill"=>"35","Steve"=>"37","Elon"=>"43");

或者

$age['Bill']="63";
$age['Steve']="56";
$age['Elon']="47";
foreach($age as $x=>$x_value) {  echo "Key=" . $x . ", Value=" . $x_value;  echo "<br>";}

多维数组:$arr = array(array(1,2),array(3,4))
数组遍历:forforeach

数组函数:

    array_push($arr,123)  数组末尾添加123

    array_pop($arr)  删除数组末尾元素

    array_unshift($arr,123) 往数组的开头添加

    array_unshift($arr) 删除数组开头元素

    sort($arr) 数组排序

六 面向对象

__construct 构造方法
__destruct 析构方法

其它包含文件引用:include "xx.php";//没找到文件警告

require "xx.php";//没找到文件警告并退出

面向对象三大特征:封装、继承、多态 。 (抽象)

include_oncerequire_once 文件只引入一次,重复引入不生效。

1)类:一类事物的统称。和其他面向对象编程语言类似,php通过class关键字声明类,其中一个类包含属性和方法两部分;

2)对象:某类事物的实例,比如人类指类,那单个人就是对象。

public:类内部可以访问,外部可以访问,子类可以访问;

private:类内部可以访问;

protected:类内部可以访问,子类可以访问。

3)构造函数:类中存在默认的构造函数,也可以指定构造函数,用于在实例化对象时指定属性而不是使用默认的属性,构造函数自动执行,无需手动调用。构造函数的的名字是两个下划线。

    public function __construct($name,$age){}

4)析构函数:也是自动执行的函数,用于实例化对象之后将类销毁。

public function ___destruct(){}

5)继承:可以通过关键字extends来定义类,被继承的类叫父类,以此继承父类的非private属性和方法。子类也可以用自己的构造函数,同时调用父类的构造函数。

七 session和cookie

session存储是指在服务器环境中的存储。

步骤:

1)使用session存储前必须开启:session_start();

2)设置的时候可以取任意名字:$_SESSION['name'] = value;

3)使用:$getValue = $_SESSION['name'];

4)干掉session:unset($_SESSION['name']);

5)清除所有session:session_destroy()。

注:页面跳转方法:header("Location:page.php");

cookie是存储在浏览器中的。

步骤:

1)设置cookie:setcookie("cookiename",$params,time() +3600)

参数一是cookie名,参数二是要保存为cookie的变量对象,参数三是过期时间。

2)取cookie:通过全局变量$_COOKIE["cookiename"],来取设置存储的cookie;

3)更改cookie和设置一样,通过setcookie来更改:setcookie("cookiename","newvalue",time() + (86400 * 30))

4)删除cookie也是使用setcookie来进行操作,只要将过期时间和设置cookie时对应上即可:setcookie("cookiename",$params,time() - 3600)

5)判断有几个cookie:count($_COOKIE)

参考文献

https://www.runoob.com/php/php-tutorial.html
https://www.w3cschool.cn/php/php-oop.html

本文作者:首乌

本文链接:https://www.wesee.club/archives/204/

版权声明:自由转载-非商用-非衍生-保持署名(cc 创意共享 3.0 许可证

php
Theme Jasmine by Kent Liao

粤ICP备2023052298号-1