当前位置:网站首页>【PHP】入门知识
【PHP】入门知识
2022-08-11 01:50:00 【漆黑丶】
基础知识
- 八种原始数据类型:
- 四种标量类型:boolean、integer、float、string
- 两种复合类型:array、object
- 两种特殊类型:resource、null
- var_dump($var):获取$var变量的类型
- memory_get_usage():获取当前PHP消耗的内存
- 八进制数字前加上0,十六进制数字前加上0x,打印时会自动转为十进制
- 当双引号中包含变量时,变量会与双引号中的内容连接在一起
- 当单引号中包含变量时,变量会被当做字符串输出
- 当字符串长度过长时,可以使用Heredoc结构形式:
- $string1 = <<<标识符
- xxxxxxxxxxxxx字符串
- 标识符;
- error_reporting(0); //禁止显示PHP警告提示
- unset($var):函数用于销毁给定的变量
- bool define(string $constant_name, mixed $value[, $case_sensitive = true]):定义常量
- 第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,但是要注意哦,它可不带美元符号哦。
- 二个参数“value”为必选参数,它是常量的值。
- 第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false。
- constant(string constant_name)函数:它和直接使用常量名输出的效果是一样的,但函数可以动态的输出不同的常量,在使用上要灵活、方便,
- 错误控制运算符“@”:对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉.需要注意的是:错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等
- foreach(数组 as 值):只取值,不取下标
- foreach(数组 as 下标 =>): 同时取下标和值
- print_r($farr):可以输出数组键以及对应的值
- __construct():定义一个构造函数,具有构造函数的类,会在每次对象创建的时候调用该函数,因此常用来在对象创建的时候进行一些初始化工作.如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象
- __destruct()进行定义,析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数
- 静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用。静态属性不允许对象使用->操作符调用。
- 属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性
- __call():方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载
- clone:对象复制,在一些特殊情况下,可以通过关键字clone来复制一个对象,这时__clone方法会被调用,通过这个魔术方法来设置属性的值
- serialize()对象序列化,可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。
- str_replace($find,$replace,$string):对字符串string里的find值替换为replace值
系统常量
- _FILE_ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。
- _LINE_ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。
- PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。
- PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码。
正则表达式
- preg_match():用于执行一个正则匹配,常用来判断一类字符模式是否存在
- \ 一般用于转义字符
- ^ 断言目标的开始位置(或在多行模式下是行首)
- $ 断言目标的结束位置(或在多行模式下是行尾)
- . 匹配除换行符外的任何字符(默认)
- [ 开始字符类定义
- ] 结束字符类定义
- | 开始一个可选分支
- ( 子组的开始标记
- ) 子组的结束标记
- ? 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
- * 量词,0 次或多次匹配
- + 量词,1 次或多次匹配
- { 自定义量词开始标记
- } 自定义量词结束标记
- \s匹配任意的空白符,包括空格,制表符,换行符。
- [^\s]代表非空白符。
- [^\s]+表示一次或多次匹配非空白符。
- \d匹配数字
- \w匹配字母或数字或下划线
- \s匹配任意的空白符,包括空格、制表符、换行符
- 当使用+之后将会变的贪婪,它将匹配尽可能多的字符,但使用问号?字符时,它将尽可能少的匹配字符,既是懒惰模式。
会话控制
- ob_start():打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出
- ob_get_contents():获得缓冲区的内容
- setcookie():函数进行Cookie的设置.setcookie具有7个可选参数,我们常用到的为前5个:name( Cookie名)可以通过$_COOKIE[‘name’] 进行访问;value(Cookie的值);expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效;path(有效路径)如果路径设置为’/‘,则整个网站都有效;domain(有效域)默认整个域名都有效,如果设置了’www.imooc.com’, 则只在www子域中有效
- setrawcookie():跟setcookie基本一样,唯一的不同就是value值不会自动的进行urlencode,因此在需要的时候要手动的进行urlencode。
- $_COOKIE:任何从浏览器发回的Cookie,PHP都会自动的将他存储在$_COOKIE的全局变量之中,因此我们可以通过$_COOKIE[‘key’]的形式来读取某个Cookie值。
- ob_clean():清空缓冲区
- header():1.跳转页面2. 声明content-type3. 返回response状态码4. 在某个时间后执行跳转5. 控制浏览器缓存6. .执行http验证7. 执行下载操作
- nl2br():函数在字符串中的每个新行(\n)之前插入 HTML 换行符(<br> 或 <br />)
- setcookie(‘test’, ‘’, time()-1):将cookie的过期时间设置到当前时间之前,则该cookie会自动失效,也就达到了删除cookie的目的
- session_start() :会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。
- $_SESSION[‘test’]:设置一个session。session会自动的对要设置的值进行encode与decode,因此session可以支持任意数据类型,包括数据与对象等。
- session_id():显示当前的sessionId
- unset($_SESSION[‘test’]):销毁一个session.如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy()会删除所有数据,但是session_id仍然存在。session_destroy()并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。
- $str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB)):对序列化后的用户信息$str使用密钥$secureKey进行加密
- $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB):对加密后的秘文进行解密,得到序列化后的对象
文件系统
- file_get_contents(‘./test.txt’),可以将整个文件全部读取到一个字符串中,也可以通过参数控制读取内容的开始点以及长度$content = file_get_contents(‘./test.txt’, null, null, 100, 500);
- fopen(“filepath”, “r/w”):打开文件路径问filepath的文件,以r-读,w-写方式打开
- fclose($fileResource):关闭文件资源变量
- feof($fileResource):判断是否时最后一行
- fgets($filr_handle):读取一行文本
- freads($file, length):可以读取指定长度的字符串
- fwrite($file,‘test’):向文件中写入’test’
- file_exists($filename):不仅可以判断文件是否存在,同时也可以判断目录是否存在
- is_file($filename):是确切的判断给定的路径是否是一个文件
- is_readable()与is_writeable():在文件是否存在的基础上,判断文件是否可读与可写
- file_put_contents($filename, ‘test’,FILE_APPEND):向文件中写入‘test’,并且以文件追加FILE_APPEND的方式写入
- fileowner($filename):获得文件的所有者
- filectime($filename):获取文件的创建时间
- filemtime($filename):获取文件的修改时间
- fileatime($filename):获取文件的访问时间
- filesize($filename):可以取得文件的大小,文件大小是以字节数表示的
- unlink($filename):删除文件
- rmdir($dir):删除文件夹
- foreach (glob(“*”) as KaTeX parse error: Expected '}', got 'EOF' at end of input: …me) { unlink(filename); }如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。
异常处理
- 略,跟其他语言类似
数据库
- mysql_connect():连接数据库
- $link = mysqli_connect(‘mysql_host’, ‘mysql_user’, ‘mysql_password’ ) : mysqli扩展
- mysql_select_db($db):选择数据库
- mysql_query($sql):进行sql查询
- mysql_fetch_assoc($result):读取数据,fetch_assoc返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false
- mysql_insert_id():获得自增的主键id
- mysql_fetch_array,可以通过设定参数来更改行数据的下标,默认的会包含数字索引的下标以及字段名的关联索引下标。可以通过设定参数MYSQL_NUM只获取数字索引数组,等同于mysql_fetch_row函数,如果设定参数为MYSQL_ASSOC则只获取关联索引数组,等同于mysql_fetch_assoc函数
- mysql_affected_rows():函数来获取更新过的数据行数,如果数据没有变化,则结果为0
- mysql_close($mnysql):关闭特定的数据库
边栏推荐
- sql 使用到where和groupby时建立索引结果为啥是这样,原理是什么?
- sql 使用到where和groupby时到底怎么建立索引?
- 【HFSS学习记录2】腔体滤波器的设计与仿真
- 本周四晚19:00知识赋能第六期第5课丨OpenHarmony WiFi子系统
- MySQL indexes and transactions
- 项目构建工具-Gradle入门
- 年薪30W,BAT抢着要,懂面试技巧的测试人究竟多吃香?
- 生信实验记录(part3)--scipy.spatial.distance_matrix
- [The method of calling the child page from the parent page of the iframe] Stepping on the pit: It is the key to use `[x]` when getting elements. You cannot use `.eq(x)`, otherwise it will not be obtai
- C# WebBrower1控件可编辑模式保存时会提示“该文档已被修改,是否保存修改结果”
猜你喜欢
【微波工程学习记录1】功率分配器和定向耦合器
【iframe父页面调用子页面的方法】踩坑:获取元素的时候需要用 `[x]`是关键,不能用`.eq(x)`否则获取不到。
通过热透镜聚焦的高斯光束
[Detailed explanation of C data storage] (1) - in-depth analysis of the storage of shaping data in memory
惨遭面试官吊打高并发系统设计,回来学习 2400 小时后成功复仇
MySQL Basics [Part 1] | Database Overview and Data Preparation, Common Commands, Viewing Table Structure Steps
【C 数据存储详解】(1)——深度剖析整形数据在内存中的存储
单面PCB布线阻抗的工程设计
微服务概念
22. Inventory service
随机推荐
Ambari迁移Spark2到其它机器(图文教程)
进程间通信(IPC)的分类以及通信方式的发展
MySQL中的DDL常规操作总结
年薪30W,BAT抢着要,懂面试技巧的测试人究竟多吃香?
一次简单的 JVM 调优,拿去写到简历里
软件测试面试题:软件测试的过程的V模型,说出它的缺点?
阿里亿级并发册 + 机器学习算法 + 面试册 + 优化册 + 代码册 笔记!!!
如何防止离职员工把企业文件拷贝带走?法律+技术,4步走
TRCX:掺杂过程分析
【微波工程学习记录1】功率分配器和定向耦合器
sql 使用到where和groupby时到底怎么建立索引?
想进阿里?先来搞懂一下分布式事务
MySQL - 一条SQL在MySQL中是如何被执行的?
生信实验记录(part3)--scipy.spatial.distance_matrix
zerorpc:async=True can be written as **{“async“: True}
第二课第一周第4-6节 医学预后案例欣赏+作业解析
软件测试面试题:谈谈你对 cmm 和 is9000 的认识?
从键入网址到网页显示的详细过程
生信实验记录(part2)--tf.reduce_sum()用法介绍
nvidia-smi详解