当前位置:首页 > 网络教程 > php > 开发知识点-PHP从小白到拍簧片

开发知识点-PHP从小白到拍簧片

一叶知秋2023-11-11 04:53:22php12

在这里插入图片描述
在这里插入图片描述

 <?php

位异或运算(^ )

5=

0000 0000 0000 0101

^

7=

0000 0000 0000 0111

=

0000 0000 0000 0010

 function encode($D,$K){
    for($i=0;$i<strlen($D);$i++) {
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}

引用符号(&)

操作符
意为and
逻辑上表示两者属于缺一不可的关系

strlen() 函数

返回字符串的长度,中文字符串的处理使用 mb_strlen() 函数

base64_encode

base64_decode加密解密函数

预定义 $_POST 变量

收集来自 method=“post” 的表单中的值。

POST 方法的发送信息的量最大值为 8 MB(可通过设置 php.ini 文件中的 post_max_size 进行更改)

session_start($array);

用于创建新会话或者重用现有会话的内置函数; 成功开始会话返回true,反之返回false。

session_start() 函数必须位于 标签之前 启动会话 //开启Session功能
Session信息的存储与读取
session_id();//获取用户Session ID值,如需修改在括号中传值即可

利用Session变量存储信息:

$_SESSION[“Session名称”]=变量或字符串信息;

读取Session变量信息(可赋值给一个变量或者直接输出):

变量=$_SESSION[“Session名称”];

@操作符

禁止php中的所有错误,包括通知、警告甚至严重错误

php 命令

php是流行的web语言

php语言还可嵌入到html中运行



php命令功能:

用于调用php解释器,管理相应的脚本

php命令的语法格式:

php [参数]

-----常用参数说明------

-q:安静模式,HTTP头输出(只有CGI)

-g:在脚本中使变量为全局变量

-f:解析和执行文件

-a:运行PHP交互方式

-b:为外部FASTCGI服务器模式(CGI)绑定路径

-r:运行PHP代码,而无需使用脚本标记“..?>”

-e:为调试器/分析器生成扩展信息

-n:没有php.ini文件将被使用

-z:加载Zend扩展文件

-H:从外部工具隐藏脚本名称(文件)和参数

--rf:返回有关函数名信息

-l:只进行语法检查

--rc:返回有关类名的信息

--re:返回有关扩展名的信息

--ri:名字显示

--ini:返回配置文件名

-C:不chdir到脚本的目录

-c:在指定目录路径中查找php.ini文件,或使用指定的文件

-i:PHP信息和配置

-T:测量脚本重复次数的执行时间

-m:在模块中显示编译

-s:输出HTML语法高亮显示源代码

-F:对每个输入行解析和执行文件

-E:处理所有的输入行后运行PHP代码

-B:处理输入行之前运行PHP代码

-w:输出源,注释和空白

-R:对每一个输入行运行PHP代码

-v:返回版本信息

clearstatcache() 函数清除文件状态缓存

basename() 函数返回路径中的文件名部分

is_file() 函数检查指定的文件是否是常规的文件

set_time_limit(7200)

设置程序执行时间的函数
0为一直等程序执行结束。

来控制运行时间 【建议使用】

当你的页面有大量数据时, 默认是30s,
所以需要你将执行时间加长点
设定一个程式所允许执行的秒数,如果到达限制的时间,程式将会传回错误

exit() 函数输出一条消息,并退出当前脚本。 该函数是 die() 函数的别名

date_default_timezone_set(‘PRC’);

date_default_timezone_set(‘Asia/Chongqing’);

date_default_timezone_set() 函数设置脚本中所有日期/时间函数使用的默认时区

echo() 函数输出一个或多个字符串

查看php运行目录命令:
which php
/usr/bin/php

查看php-fpm进程数:
ps aux | grep -c php-fpm

查看运行内存
/usr/bin/php -i|grep mem

重启php-fpm
/etc/init.d/php-fpm restart

isset()

检测变量是否设置


PHP 命名空间(namespace)

语法要求 :
命名空间必须是程序脚本的第一条语句

重名问题:
class名 函数名 const常量名(define 无效) ------>redeclare 报错
便可 利用命名空间 进行分割区分
调用空间元素时候 :\xx\xxx();

  • 多级命名空间
    子集命名空间 - 子空间
    空间(文件)元素较多
    (TP自动加载 命名空间虚拟目录名称转化路径)
    利于 -快速 判断文件 定位

  • 三种方式引用
    在这里插入图片描述

  • 访问静态成员
    在这里插入图片描述在这里插入图片描述

  • 引入机制

  1. 空间引入

use 空间;
限定子空间访问元素;
在这里插入图片描述在这里插入图片描述在这里插入图片描述
2. 空间类元素引入

在这里插入图片描述

  • 公共空间 没有namespace关键字的
    元素应用 要注意 :
    有命名空间 include 引入公共空间——对当前空间没有影响
    优先级 查找当前空间+引用

反之亦然

尽量用完全限定空间进行引用;
在这里插入图片描述

  • TP框架 虚拟命名空间实例
    相互对应: 实际文件夹 —— 虚拟命名空间
    实现自动加载
    use 引用空间类元素

  • eg 加载模版
    在这里插入图片描述在这里插入图片描述在这里插入图片描述


new 实例化类

extends 继承 一个类使用另一个类方法

declare(encoding=‘UTF-8’);
定义多个命名空间和不包含在命名空间中的代码

error_reporting()

error_reporting(0);
设置当前脚本的错误报告级别
函数规定你给应该报告何种 PHP 错误 E_ALL | E_STRICT

static 声明的成员变量属于静态成员变量

Function类型函数实际上是对象

每个函数实际上都是 Function 类型的实例

:: 类中 静态方法和静态属性的引用方法

不需要实例化对象,直接通过类名对类中的方法进行引用

 class Test{
 

public static $test = 1;

public static function test(){

							}
							

}

Test:: t e s t 来取得 test 来取得 test来取得test属性的值

Test::test(); 直接调用静态方法test

 try {

   //尝试执行的代码块

}

catch (异常类型1 异常的变量名1) { 

   //捕获错误的代码块1

}

...

catch (异常类型2 异常的变量名2) {

   //捕获错误的代码块2

}

finally {

   //最终执行的代码块

}

=> 是数组成员访问符号

-> 是对象成员访问符号

比如:

$array = array("site map"=>"map.php"); //定义了一个数组
包含一个数组成员:键名为site map,值为map.php

t h i s − > this-> this>name = $value

$this 在php里是个特定的变量,它代表了类本身,
->是访问其类成员的操作符,
t h i s − > this-> this>name = $value,
这句代码意思是:将当前类的name变量的值设置为 $value.

printStackTrace对调试程序有帮助 重构获取异常栈信息
count() 函数返回数组中元素的数目

microtime() 函数返回当前Unix 时间戳的微秒数

memory_get_usage()能返回当前分配给PHP脚本的内存量,单位是字节(byte)【PHP内置函数】
使用它来调试PHP代码性能

DIRECTORY_SEPARATOR【内置常量】
使用“\”作为文件分隔符 linux上系统不认识这个标识,于是就要引入这个php内置常量了

defined() 检测某个常量的名称是否存在.

如果已定义返回 true 未定义返回 false


短路求值 计算逻辑或表达式 计算左侧如果是true,那么就不再计算右侧,直接返回true,
所以A or B;可以达到if(!A) B;的效果
如果左侧是false,那么同样会发生短路,不计算右侧直接返回false A and B;类似if(A) B;

短路求值在语意上比较接近英文,又回避了“if必加花括号”带来的视觉污染(?),
所以还算比较通行的做法(虽然严格意义上来说不算是好习惯)

defined or define
如果左定义 跳过右
否则不跳

$SERVER[‘SCRIPT_FILENAME’]本文件的绝对路径
指向当前执行脚本的绝对路径

strtoupper() 函数把字符串转换为大写

is_array() 函数用于检测变量是否是一个数组

getenv 取得系统的环境变量

putenv()
返回值:无
函数种类:PHP 系统功能
内容说明:本函数用来配置系统环境变量。

__FILE__指向当前执行脚本的绝对路径

在这里插入图片描述

PHP常量PHP_SAPI与函数php_sapi_name()
PHP运行环境检测
用来判断是使用命令行还是浏览器执行的,如果 PHP_SAPI==’cli’ 表示是在命令行下执行

三元运算符 语法:条件 ? 结果1 : 结果2
在这里插入图片描述

strpos() 函数

查找字符串在另一字符串中第一次出现的位置。

注释:strpos() 函数对大小写敏感。

注释:该函数是二进制安全的
在这里插入图片描述
获取当前操作系统类型 PHP_OS
在这里插入图片描述
is_file() 函数检查指定的文件是否是常规的文件。

如果文件是常规的文件,该函数返回 TRUE。

parse_ini_file() 函数解析一个配置文件(ini 文件),并以数组的形式返回其中的设置

在这里插入图片描述

foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement

在这里插入图片描述


关键字

对象克隆/复制

在这里插入图片描述
在这里插入图片描述

version_compare 用户对比两个【PHP规范化】版本数字字符串

PHP_VERSION:当前PHP的版本号

$_SERVER[‘SCRIPT_NAME’] 自动获取当前文件在网站中的路径

–127.0.0.1/2019/index.php

echo $_SERVER[‘SCRIPT_NAME’] ;
/2019/index.php




dirname 返回路径中的目录部分

 <?php
 echo dirname("c:/testweb/home.php") . "<br />";
 echo dirname("/testweb/home.php");
 ?> 

上面的代码将输出:

 c:/testweb
 /testweb 




/2019

str_replace 以其他字符替换字符串中的一些字符

===是包括变量值与类型完全相等

==只是比较两个数的值是否相等

trim()函数

移除字符串两侧的空白字符或其他预定义字符

substr() 函数

返回字符串的一部分

魔术常量 DIR

指向当前执行的PHP脚本所在的目录
当前执行的PHP文件为 /www/website/index.php
则__FILE__等于’/www/website/index.php’
而__DIR__等于’/www/website’
现在我们要包含当前文件目录或子目录下的文件,可以直接使用:

<?php require_once __DIR__ . 'test.inc.php'; ?>     



realpath() 函数返回绝对路径。

该函数删除所有符号连接(比如 ‘/./’, ‘/…/’ 以及多余的 ‘/’),返回绝对路径名。

若失败,则返回 false。比如说文件不存在的话




define() 函数定义一个常量

chmod() 函数改变文件模式 bool(true)

2022.2.20

文档

https://pkg.xyz/#how-to-install-composer
 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
 php composer-setup.php
 php -r "unlink('composer-setup.php');"

在这里插入图片描述

 全局安装是将 Composer 安装到系统环境变量 PATH 所包含的路径下面,然后就能够在命令行窗口中直接执行 composer 命令了。

Windows 系统:
找到并进入 PHP 的安装目录(和你在命令行中执行的 php 指令应该是同一套 PHP)。
将 composer.phar 复制到 PHP 的安装目录下面,
也就是和 php.exe 在同一级目录。
在 PHP 安装目录下新建一个 composer.bat 文件,
并将下列代码保存到此文件中。
 
@php "%~dp0composer.phar" %*
 最后重新打开一个命令行窗口试一试执行 
 composer --version 看看是否正确输出版本号。


不要忘了经常执行 composer selfupdate 以保持 Composer 一直是最新版本哦!

php redis 支持

https://pecl.php.net/package/redis/5.3.7/windows

phpstudy 开启 redis缓存

phpstorm远程开发配置

官网下载地址:https://www.jetbrains.com/phpstorm/
java JVM
-vmargs: 说明后面是VM的参数
-Xms40m: 虚拟机占用系统的最小内存
-Xmx256m: 虚拟机占用系统的最大内存
-XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,
堆空间剩余小于5%就会警告,建议把这个稍微设
大一点,不过要视自己机器内存大小来设置
-XX:MaxPermSize:最大堆大小。这个也适当大些
-Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M

 把里面的参数改为

-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=128M
-XX:MaxPermSize=256M

 便可以解决内存不足的问题了,而仅仅改-Xms和-Xmx是不太合理的。

别问我这个是什么连接:http://idea.lanyus.com/

phpstorm有一大堆的骚操作,
例如git,svn版本控制,sftp,ftp,ssh,http client,代码追踪,断点,主题自定义…

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

No input file specified.(apache)

phpstudy是win系统下面一个php环境一体包,可以通过这个工具轻松实现搭建php等网站。作为动态网站,采用php等页面暴露到公网依然存在一定安全隐患,一般可通过伪静态来隐藏真实地址。

在apache扩展菜单里面,找到rewrite_module模块,把它启用。勾上

也可以直接打开apache配置文件里面,“/apache/conf/” 下的 httpd.conf 文件,通过查找“LoadModule rewrite_module”,把前面的”#”号删除

查找AllowOverride None,替换为 AllowOverride All (有多处设置,需要替换)然后保存

https://blog.csdn.net/xgocn/article/details/79334296
即可。
apache No input filespecified,今天是我们配置apache RewriteRule时出现这种问题,解决办法很简单如下

apache No input filespecified,今天是我们配置apache RewriteRule时出现这种问题,解决办法很简单如下

打开.htaccess 在RewriteRule 后面的index.php教程后面添加一个“?”

完整代码如下

.htaccess

 
RewriteEngine on
 
RewriteCond $1 !^(index.php|images|robots.txt)
 
RewriteRule ^(.*)$ /index.php?/$1 [L]

如果是apache服务器出问题,看看是不是的Apache 把 .php 后缀的文件解析哪里有问题了。

总结

Apache 将哪些后缀作为 PHP 解析。例如,让 Apache 把 .php 后缀的文件解析为PHP。可以将任何后缀的文件解析为 PHP,只要在以下语句中加入并用空格分开。这里以添加一个 .phtml 来示例。

AddType application/x-httpd-php .php .phtml

为了将 .phps教程作为 PHP 的源文件进行语法高亮显示,还可以加上:

AddType application/x-httpd-php-source .phps

用通常的过程启动 Apache(必须完全停止 Apache 再重新启动,而不是用 HUP 或者USR1 信号使 Apache 重新加载)。

APACHE服务器出现No input file specified.解决方案 thinkcmf程序默认的.htaccess里面的规则:

 <IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

“No input file specified.”,是没有得到有效的文件路径造成的。

修改伪静态规则,如下:

 <IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>

就是正则结果“/$1”前面多加了一个“?”号。。

作业外包 学生管理系统

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

地址: https://pan-yz.chaoxing.com/views/external/thumb.html?name=4.%E5%AE%9E%E4%B9%A0%E9%A1%B9%E7%9B%AE1-%E5%AD%A6%E7%94%9F%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F.pdf&pagenum=43&thumb=https%3A%2F%2Fs3.ananas.chaoxing.com%2Fdoc%2F75%2Fc0%2Ff6%2Fb591b59d4ba8ad7e46aa996d673f3f1e%2Fthumb%2F

在这里插入图片描述在这里插入图片描述

PHP实战-在线聊天室

  • Workerman,高性能socket服务框架
  • 纯PHP开发的开源高性能的PHP socket 服务框架
  • 更底层更通用的socket服务框架
  • 开发tcp代理、T子代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等
  • 类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。
  • Workerman每个进程能维持上万并发连接
  • 本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能
  • 同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协以及各种自定义协议
  • 拥有定时器、异步socket客户端、异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件

  • 做即时通讯重要的就是保持长连接,实现客户端和客户端的通讯

简单实例

扫描二维码推送至手机访问。

版权声明:本站部分文章来自AI创作、互联网收集,请查看免责申明

本文链接:https://www.yyzq.team/post/300005.html

分享给朋友: