什么事面向对象?主要特征是什么
面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。
HTTP 状态中302、403、 500代码含义?
一二三四五原则: 一. 消息系列 二 成功系列 三. 重定向系列 四. 请求错误系列 五. 服务器端错误系列
302:临时转移成功,请求的内容已转移到新位置 403:禁止访问 500:服务器内部错误 401代表未授权。
会话控制:是一种用来跟踪用户上网信息的技术,是建立在浏览器和服务段对话之间的一中监控手段
cookie:是一中用来跟踪和识别用户上网信息的会话控制技术,他将跟踪后的信息存储只浏览器 的客户端
session:已是一种和cookie一样的会话控制技术,它将跟走后的信息及文件的形式存储在服务段,所以
php文件的后缀名默认为:.php
php标记默认:<?php ?>
php输出:使用echo (当echo的内容是字符串时需要加引号),,可以输出一个或多个字符串。
print:只允许输出一个字符串,返回值总为1。
注销 单行注释: //或#
多行注释:/* */
php的数据类型
四种基本的数据类型:整型:int
浮点型:float或double
布尔类型:bool
字符串:string
两种复合数据类型:数组:array
对象:object
两种特殊的数据类型:空类型:null
资源类型:resource
获取和转换变量类型:① gettype() :获取变量的数据类型
②settype() :对变量进行前置的数据类型转换
声明方式:直接在变量名的前面加
即
可
,
p
h
p
变
量
不
需
要
声
明
,
可
直
接
拿
来
使
用
。
规
则
:
由
数
字
、
字
母
、
下
划
线
、
组
成
,
开
头
不
能
是
数
字
,
必
须
以
即可,php变量不需要声明,可直接拿来使用。 规则: 由数字、字母、下划线、组成,开头不能是数字,必须以
即可,php变量不需要声明,可直接拿来使用。规则:由数字、字母、下划线、组成,开头不能是数字,必须以为开始符,变量区分大小写
unset():销毁变量
empty():检测变量的值是否为空,为空返回true,不为空返回false
isset():检测变量的值是否被设置,且值不是null,符合返回true, 否则返回flash
常量
定义:在程序运行过程中,一旦设置值就不能发生改变的容器,称为常量。
声明方法:define(“常量名”,“常量的值”)
检测常量的值是否定义:defined(“常量名”)
定义了返回true 没有定义返回false
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
php字符串变量并置运算符:并置运算符 (.) 用于把两个字符串值连接起来。
strlen()函数 返回字符串的长度(字节数)
strpos()函数 用于在字符串内查找一个字符或一段指定的文本,如果在字符串中找到匹配,该函数会返回一个匹配字符的位置,如果未找到匹配,则返回false。
mplode(参数1,参数2):把数组元素组合为一个字符串。参数1:数组元素之间放置的内容,默认是""(空字符串);参数2:要组合为字符串的数组。
expiode(参数1,参数2,参数3):将字符串转换为数组。参数1:规定在哪里分割字符串;参数2:要分割的字符串;参数3:规定所返回的数组元素的数目。
lcfirst() 函数把字符串中的首字符转换为小写。
ucfirst()函数把字符串中的首字符转换为大写。
.ucwords()函数把字符串中每个单词的首字符转换成大写。
.strtoupper()函数把字符串转换为大写。
strtolower()函数把字符串转换为小写。
.trim() 可移除字符串两端的空白字符或其他预定义字符
.ltrim() 可移除字符串左边的空白字符或其他预定义字符
.rtrim() 可移除字符串右侧的空白字符或其他预定义字符
.str_repeat(参数1,参数2) 函数把字符串重复指定的次数。(参数1:要重复的字符串,参数2:字符串被重复的次数,必须大于等于0)
.str_replace() 函数 替换字符串中的一些字符(区分大小写)。
.str_ireplace() 函数替换字符串中的一些字符(不区分大小写)
15/16函数必须遵循下列规则:
如果搜索的字符串是一个数组,那么它将返回一个数组。
如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对某个数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余的元素将用空字符串进行替换。
如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作。
.str_split(参数1,参数2) 函数把字符串分割到数组中。(参数1:要分割的字符串,参数2:每个数组元素的长度,默认值为1)。
.strchr(参数1,参数2) 函数搜索字符串在另一字符串中的第一次出现。(参数1:被搜索的字符串;参数2:所搜索的字符串。别名:strstr() )。
.strcmp(参数1,参数2)函数比较两个字符串。 (参数1:比较的第一个字符串;参数2:比较的第二个字符串。大小写敏感)。
算数运算: + - * % /
赋值运算符:= += -= %= *= /=
比较运算符(关系运算符):== === != <> !== > < >= <=
逻辑运算符:&& ||
三元运算符:(expr1) ? (expr2) : (expr3)
组合运算符:$c = $a <=> $b;
eg:如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则
c
的
值
为
−
1
。
递
增
递
减
运
算
符
:
+
+
x
x
+
+
−
−
x
x
−
−
错
误
屏
蔽
运
算
符
:
@
字
符
串
拼
接
运
算
符
:
.
输
出
语
句
的
不
同
.
e
c
h
o
:
可
以
输
出
多
个
语
句
,
语
句
与
语
句
之
间
用
英
文
逗
号
隔
开
,
只
能
输
出
基
本
的
数
据
类
型
.
p
r
i
n
t
:
只
能
输
出
一
个
语
句
,
只
能
输
出
基
本
的
数
据
类
型
,
.
v
a
r
d
u
m
p
(
)
:
可
以
打
印
任
何
类
型
的
数
据
,
输
出
的
内
容
主
要
包
括
:
数
据
类
型
,
长
度
,
数
据
内
容
.
p
r
i
n
t
r
(
)
:
结
构
化
打
印
,
主
要
用
于
输
出
数
组
的
基
本
结
构
引
号
的
使
用
规
范
单
引
号
:
单
引
号
可
以
用
于
字
符
串
输
出
,
单
引
号
内
不
能
嵌
套
单
引
号
,
必
须
使
用
双
引
号
。
双
引
号
:
双
引
号
可
以
用
于
字
符
串
输
出
,
双
引
号
内
不
能
嵌
套
双
引
号
,
必
须
使
用
单
引
号
。
.
如
果
输
出
的
内
容
中
有
变
量
,
并
且
要
被
解
析
,
则
变
量
名
的
外
层
引
号
必
须
是
双
引
号
,
只
有
双
引
号
才
能
解
析
以
c 的值为 -1。 递增递减运算符:++x x++ --x x-- 错误屏蔽运算符 :@ 字符串拼接运算符: . 输出语句的不同 .echo:可以输出多个语句,语句与语句之间用英文逗号隔开,只能输出基本的数据类型 .print:只能输出一个语句,只能输出基本的数据类型 ,.var_dump():可以打印任何类型的数据,输出的内容主要包括:数据类型,长度,数据内容 .print_r():结构化打印,主要用于输出数组的基本结构 引号的使用规范 单引号:单引号可以用于字符串输出,单引号内不能嵌套单引号,必须使用双引号。 双引号:双引号可以用于字符串输出,双引号内不能嵌套双引号,必须使用单引号。 .如果输出的内容中有变量,并且要被解析,则变量名的外层引号必须是双引号,只有双引号才能解析以
c的值为−1。递增递减运算符:++xx++−−xx−−错误屏蔽运算符:@字符串拼接运算符:.输出语句的不同.echo:可以输出多个语句,语句与语句之间用英文逗号隔开,只能输出基本的数据类型.print:只能输出一个语句,只能输出基本的数据类型,.vardump():可以打印任何类型的数据,输出的内容主要包括:数据类型,长度,数据内容.printr():结构化打印,主要用于输出数组的基本结构引号的使用规范单引号:单引号可以用于字符串输出,单引号内不能嵌套单引号,必须使用双引号。双引号:双引号可以用于字符串输出,双引号内不能嵌套双引号,必须使用单引号。.如果输出的内容中有变量,并且要被解析,则变量名的外层引号必须是双引号,只有双引号才能解析以开头的变量。
数据库范式
第一范式:表中的列不可重复,且每一列不能再分,保持原子性
第二范式:表中的每行数据保证唯一,且每列都和主键有关
第三范式:表中每一列都要和主键列有直接相关关系,消除依赖传递
魔术方法
__get()方法的作用和使用
作用:在类外获取私有属性的值时__get()自动调用,作用是用于返回私有属性的值
__get(参数) 参数:代表在类外获取私有属性名
__set()方法的作用和使用
作用:在类外给私有属性设置值时,该方法自动调用
参数:第一个参数表示要设置的属性名 第二个参数表示要设置的属相值
__call()方法的作用和使用
作用:在类外访问一个不存在的方法时,该方法自动调用
__call( 1,2) 参数1:代表请求的方法名 参数2:代表访问方时传递的参数
__sleep()方法的作用和使用
作用:在类外进行对象的串行化时(serialize() ) 该方法自动调用,用于在串行化之前做一些操作
没有参数,但必须有返回值,返回值是一个数组,就是你让对象睡觉时哪些属性跟着对象睡觉
__wakeup()
作用:在类外进行对象的反串行化时(unserialize) 该方法自动调用用于在对象唤醒前,做一些准备工作
__toString()
作用:在类外输出对象时,该方法自动调用,必须有一个返回值,是一个字符串类型
__clone()
作用:在类外克隆对象时,该方法自动调用,用于在克隆前做一些操作
__isset()
作用:在类外检测私有属性的值是否设置时,该方法自动调用,参数是你检测的私有属性的名称,返回值就是通过isset()函数在类中进行检测
__unset()
作用:在类外销毁私有属性时该方法自动调用,用于在类中进行对属性的删除。
:堆和栈的区别?
A、堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小;
B、栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义。
索引的作用?和它的优点缺点是什么?
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
什么是锁?
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。
基本锁类型:锁包括行级锁和表级锁
如何实现PHP的安全最大化?怎样避免SQL注入漏洞和XSS跨站脚本攻击漏洞?
基本原则:不对外界展示服务器或程序设计细节(屏蔽错误),不相信任何用户提交的数据(过滤用户提交)。