PHP让我又爱又恨!当年追妹不成却与此纠缠十几年?

爱站CMS综合管理系统源码php版 简介: 爱站CMS综合管理系统源码php版,运行于以下环境:Apache2.2,PHP Version 5.4.15,Zend Guard Loader 6.0,MySQL-5.5.20 代码全部开源,可方便进行二次开发,功能模块可以自由安装与删除,个人用户免费使用,系统频道模块很多,适合作个人门户网站。 精美模板免费使用,页面可设置静态页。该系统专门为企业网站(信息平台类、展示商品等)、政府机关、教育机构、个人站长等用户设计的,该免费软件可轻松打造专属于自己的网站。 爱站CMS特点: 1.爱站CMS是免 阅读详情

记得第一次接触PHP是在大学宿舍,当时为了追妹子想做个表白网站。结果妹子没追到,倒是和PHP纠缠了十几年。今天就跟你们唠唠这个让人又爱又恨的语言。

先说说环境搭建这个坑。当年用XAMPP装环境,硬是把C盘塞爆了。现在用Docker多香,给你们看看我的docker-compose.yml配置:

version: '3'

services:

php:

image: php:8.1-fpm

volumes:

./:/var/www/html

nginx:

image: nginx:alpine

ports:

"8080:80"

./nginx.conf:/etc/nginx/conf.d/default.conf

注意,这里有个大坑是文件权限问题。Linux下经常遇到Permission denied,得chmod -R 777一下(别学我,生产环境别这么干)。

说到PHP基础语法,最骚的就是变量前面那个$符号。刚开始写代码的时候,总忘记加这个符号,然后就看到满屏的undefined variable。后来养成了肌肉记忆,连做梦都是$符号满天飞。

数组操作是PHP的灵魂技能。看看这些骚操作:

// 传统写法

$arr = array('a', 'b', 'c');

// 5.4+的简写

$arr = ['a', 'b', 'c'];

// 关联数组

$user = [

'name' => '张三',

'age' => 25,

'girlfriend' => null

];

说到这想起来,PHP7的null合并运算符??真是救星。以前要写:

$name = isset($_GET['name']) ? $_GET['name'] : 'anonymous';

现在直接:

$name = $_GET['name'] ?? 'anonymous';

数据库操作这块,PDO是必须掌握的。别再用mysql_那些被废弃的函数了,除非你想被同行笑话。来段标准操作:

try {

$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');

$stmt = $pdo->prepare('SELECT

FROM users WHERE age > :age');

$stmt->execute([':age' => 18]);

$users = $stmt->fetchAll(PDO::FETCH_ASSOC);

} catch (PDOException $e) {

die('数据库挂了:' . $e->getMessage());

}

这里有个坑要注意,PDO默认不报错,得设置ERRMODE_EXCEPTION才会抛出异常。没设置的话,SQL语句错了也不告诉你,跟暗恋似的,憋着不说。

说到框架,Laravel现在是大热门。但刚入门建议从原生PHP开始,不然你连Composer是啥都不知道就上框架,跟没学会走路就想跑马拉松一样。给你们看看我用Laravel写的路由:

Route::get('/user/{id}', function ($id) {

return 'User '.$id;

})->where('id', '[0-9]+');

Route::post('/login', 'AuthController@login');

这语法糖甜得齁人,但底层原理得搞明白。建议看看Illuminate/Routing这个包,研究下服务容器和中间件机制。

性能优化这块,OPcache必须安排上。php.ini里加上这几行:

zend_extension=opcache.so

opcache.enable=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

这样性能直接起飞,比喝红牛还提神。

调试技巧也很重要。xdebug配好了是真香,但配置过程能让人崩溃。给你们看看我的配置:

[xdebug]

zend_extension=xdebug.so

xdebug.mode=debug

xdebug.client_host=localhost

xdebug.client_port=9003

xdebug.start_with_request=yes

配完记得重启php-fpm,不然改了个寂寞。还有,PHPStorm里要配置好对应的端口,不然断点打不上,急得你想砸键盘。

安全方面,SQL注入是老生常谈了。除了用PDO预处理,输入过滤也很重要。filter_var函数了解一下:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);

if (!$email) {

die('邮箱格式不对,你是想黑我网站?');

}

XSS防护也得做,htmlspecialchars是基本操作:

echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');

最近在玩PHP8的新特性,JIT编译器是真带劲。虽然对普通Web应用提升不大,但做数学计算之类的能快不少。match表达式也比switch优雅:

$status = match($code) {

200 => 'OK',

404 => 'Not Found',

500 => 'Server Error',

default => 'Unknown'

};

最后说个真实案例。之前做项目遇到个诡异问题:文件上传偶尔失败。debug了三天三夜,发现是php.ini里upload_max_filesize和post_max_size设置不一致。这种坑踩过才知道疼。

PHP这语言,被黑是常态。但你看GitHub上多少项目还在用PHP,WordPress、Facebook(早期)、Wikipedia不都活得好好的。关键是把语言特性吃透,写出健壮的代码。

对了,最近在搞Swoole,用PHP写高性能服务器真刺激。等我把坑都踩完了,下次再跟你们细聊。

风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真 内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于隔离型全桥LLC谐振变换器的建模、仿真与参数设计,涵盖其在电力电子系统中的关键应用,如软启动、闭环控制、变频控制及效率优化等。该模型支持对LLC变换器在不同工作模式下的动态响应与性能表现进行深入研究,适用于探究谐振拓扑结构、磁性元件设计、谐振参数匹配以及先进控制策略的科研与工程实践。同时,文档配套提供了仿真模型、设计报告与计算书等完整资料,强化了其实用性与教学价值。; 适合人群:具备电力电子、自动化或电气工程等相关专业背景,从事电力电子变换器研发、系统仿真与控制算法设计的科研人员、工程师及研究生。; 使用场景及目标:①用于全桥LLC谐振变换器的建模、仿真与动态性能分析;②支持对软启动过程、闭环稳压控制、变频调谐及效率优化等核心技术的研究与教学;③为电力电子电源系统的工程设计、参数优化与控制策略验证提供高精度仿真平台。; 阅读建议:建议结合Plecs或Simulink等仿真工具进行动手实践,重点理解电路拓扑构建、谐振参数计算、控制器设计与系统稳定性分析,并配合文档中的设计报告与计算书,系统掌握从理论到仿真的完整流程。 立即下载

相关推荐

车载监控系统升级指南:如何用XS9950A替换TP9950实现高清视频解码(附配置代码)

本文提供了从TP9950升级至XS9950A车载视频解码芯片的完整实战指南。详细解析了硬件设计调整、PCB布局要点,并重点分享了通过I2C配置寄存器实现高清HDCCTV视频解码与同轴音频集成的软件驱动代码与调试技巧,助力工程师平滑完成系统升级。

weixin_29268637的博客 372

5 款让我又爱又恨的编程语言!

不可否认,想要成为一名优秀的程序员确实是需要掌握多种编程语言。通过这几年的自虐式学习,我也慢慢的掌握了这些编程语言。 鬼知道这过程多么痛苦,但也因为它们,我会获得比别人更多的机会。接下来要为大家,介绍五款让我又爱又恨的编程语言! 1.C语言 C语言给人的感觉,就是一位神秘莫测而又高冷型的女生形象。 这是因为c语言相比其他编程语言难度高一些,这也就多了一丝神秘,每当以为快要接近它时,它又狠心的推开!狠心的C!语!言! 无法拒绝C语言的原因:UNIX由C编写而成,其运行在大部分手机与大多数云环境当中,这意味着

Java技术栈,分享最主流的Java技术 418

2023西工大NOJ (C语言版) 完结!!!

代码均可AC,不含解析。

annesede的博客 8万+

PSR-4标准到底是啥?让PHPer又爱又恨的规范

最近有个刚入行的老弟问我:哥,我看好多PHP项目都写着PSR-4兼容,这东西到底是个啥?能吃吗? 我当场就把手里的肥宅快乐水喷在了机械键盘上——得,又得拆键帽清洗了。今天咱就来唠唠这个让无数PHPer又爱又恨的PSR标准。先来个灵魂拷问:你有没有经历过这种场景?在项目里include一个文件时

EjYLKEwT的博客 731

Python读取三菱PLC数据

3、支持自定义的数据读写操作。直接调用Read方法,可以读取到原生的byte数组,然后进行组合数据。1、每次的数据交互您都可以判断是否成功,如果您不判断,如果网络断开或是异常,会影响程序的执行。Qna3E协议的ascii类 MelsecMcAsciiNet。A兼容1E协议的二进制类 MelsecA1ENet。Qna3E协议的二进制类 MelsecMcNet。2、读写操作支持单个数和数组。

weixin_46744807的博客 1998

腾讯云运维工程师认证TCA--真题(最新2022.11)

解析:云原生应用的12要素,1.基准代码:一份基准代码,多份部署;解析:腾讯云主账号具备对其名下资源(包括存储桶)的最大权限,您虽然可以在存储桶策略中限制几乎所有操作,但主账号始终具备 PUT Bucket Policy 操作的权限,主账号调用该操作不检查存储桶策略。解析:瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。解答:云原生五大关键技术:微服务、容器化、DevOps、持续交付。

e1210101的博客 9915

让我又爱又恨的Java《打工人的那些事》

我从事Java行业,差不多有6年了。 对于Java,我是又爱又恨。那么,爱从何说起、恨又从何而谈。 下面我会一一道来。

谙忆-陈浩翔 3269

Altium Designer操作技巧(1)——原理图中如何批量替换元器件?

《AltiumDesigner批量替换元器件技巧分享》摘要:本文介绍了两种在AltiumDesigner中批量替换元器件的实用方法。方法一通过“查找相似对象”功能,可精准匹配并批量修改器件参数;方法二利用ActiveBOM功能,在BOM表中直观操作器件替换,推荐使用第二种方法可使BOM管理更高效。这些技巧能有效减少物料种类、降低贴装成本,特别适用于电阻电容等常用器件的批量替换。关注公众号获取更多电子设计技巧。

u012526819的博客 2585

PHP很差吗,为什么这么招人恨

没错,你没听错。根据3Techs的数据,截止到2023年7月,我们知道的所有网站中,有高达在用PHP。这可不是小数目哦!PHP之所以变得这么火,主要是因为它入门简单。没等你喊出“Hello, World!”,你可能已经能搞定一个网页跟数据库的交互了。还有,别忘了WordPress。能想象它撑起了超过网络40%的内容吗?但即便有这么亮眼的成绩,PHP经常被拿来开玩笑。随便搜一下“hate”,你能找到的黑料堪比小红书上的猫税。

Sammyyyyy的博客 1859

SDIO协议

SDIO协议1 概述  SDIO,全称:Secure Digital Input and Output ,即安全数字输入输出接口。2 特点①与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式:1位(默认)、4位和8位。②与较早的多媒体卡系统规格版本全兼容(向前兼容)。③与SD存储卡规格版本2.0全兼容。④与SD I/O卡规格版本2.0全兼容:支持两种不同的数据总线模式:1位(默认)和4

Let the development board fly! 3万+

PX4|Gazebo模型加载失败排查指南:从环境变量到资源路径的全面解析

本文针对PX4与Gazebo联合仿真中常见的'Unable to get model name'错误,提供了从环境变量配置、资源路径排查到网络访问问题的全面解决方案。详细解析了GZ_SIM_RESOURCE_PATH等关键变量的作用与设置方法,并给出了离线模型库部署等一劳永逸的修复指南,帮助开发者彻底解决无人机模型加载失败问题。

weixin_29243063的博客 1230

十几年之后,我的 PHP 启蒙老师教会了我 AI 编程

一位37岁的程序员在职业迷茫期,深夜刷B站时意外重逢13年前教他PHP的韩顺平老师,发现老师正在教授AI编程课程。13年前,正是这位老师用通俗易懂的教学方式带他入门编程。如今面对技术更新换代的焦虑,老师的出现让他重新振作,认识到AI只是新工具而非威胁。文章通过这段跨越13年的师生情谊,传递出"基础扎实就能适应变化"和"坚持学习永不嫌晚"的积极信念,鼓励程序员们保持学习热情,拥抱技术变革。

BigOuzi的博客 212

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2171

妹Blog开源项目教程

妹Blog开源项目教程 1、项目介绍 妹Blog(imouto)是一个快速、明确、极简的博客程序,旨在充分利用缓存、模板、模块化、静态化以及不同以往的框架结构,实现高效的内容呈现。该项目基于iTorr.js框架,采用Q.JS实现前后端分离的单页路由,支持Markdown格式正文和代码高亮。妹Blog支持多用户、分类、原生评论系统/多说评论(重封装),并提供拖拽图片即上传的功能(免费图像托管)。此外...

gitblog_00096的博客 877

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

docker中php容器默认不会追写php的慢日志问题及Linux capabilities及docker中PHP配置项php_value、php_flag等的区别

在Linux系统中,PHP-FPM使用SYS_PTRACE跟踪worker进程,SYS_PTRACE是什么?设置指定的值. 只适合于 PHP_INI_ALL 和 PHP_INI_PERDIR 类型指令. 清除之前设置的值使用 none 标记. Note: 不要使用 php_value 设定布尔值和php_flag (见下文) .docker中添加PHP配置项的方法有不少,php_value、php_flag、php_admin_value、php_admin_flag,如下是一个加载的php配置文件示例。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 1326

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

妹Blog:轻量级博客引擎

妹Blog:轻量级博客引擎 妹Blog(itorr/imouto)是一个快速、明确、极简的博客程序,主要使用JavaScript和PHP编程语言开发。它旨在通过利用缓存、模板、模块化、静态化以及独特的框架结构,实现内容的快速呈现。 项目基础介绍 妹Blog是一个开源的博客引擎,它支持PHP和MySQL环境,并为SAE和Hostker提供了特殊支持。项目以Apache-2.0协议开源,允许用户自由使...

gitblog_00297的博客 367

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php获取哔哩哔哩追番_获取 B 站追番信息

{"code": 0,"message": "0","ttl": 1,"data": {"list": [{"season_id": 28546,"media_id": 28222624,"season_type": 1,"season_type_name": "番剧","title": "爱书的下克上:为了成为图书管理员不择手段!","cover": "http://i0.hdslb.com/b...

weixin_39783633的博客 922

又爱又恨的LightTPD

lighttpd 运行php rewrite后找不到模块

李文明的专栏 651

php 得到当年的文件名,php 如何获取当年日期的年份

本篇文章主要介绍php如何获取当年日期的年份,感兴趣的朋友参考下,希望对大家有所帮助。echo date('Y');//2016snippet_file_name="blog_20160903_1_8369778" name="code" class="html">echo date('y');//16?>date_default_timezone_set('PRC'); //默认时区...

weixin_42461108的博客 167

网站在哪里查看是否php的站,PHP获取网站在爱站查询的百度权重

PHP获取网站在爱站查询的百度权重蓝叶网站设计2016-05-19109210评论自从谷歌不更新了PR后,很多站长在做友情链接时都以百度权重来衡量每个网站的好坏,其实百度并没有推出百度权重这么个东西,而是站长工具和爱站这两个站推出的参考值,通过分析网站的关键词以及网站设置的这些关键词有多少页面收录为依据,推算出网站的百度权重,也不是那么准确,这只能作为参考;这篇文章...

weixin_35411487的博客 275

花式撩妹套路,土味情话大全撩妹套路泡妞秘籍(表白网页源码13套)

花式撩妹套路,土味情话大全撩妹套路泡妞秘籍(表白网页源码13套) html表白代码大全可复制,浪漫的html表白特效网页制作源代码 抖音非常火的一款表白源码 抖音最火表白源码HTML biu biu biuhttps://download.youkuaiyun.com/download/dhyuan_88/16293717 520版-表白源代码html动态图https://download.youkuaiyun.com/download/dhyuan_88/16301411 爱情树版-表白源代码html动态图https:.

dhyuan_88的博客 1405

PHP 批量查询爱站网站权重

根据你的具体需求选择合适的方案:如果需要快速简单实现,推荐方法一的第三方API;如果需要更稳定可靠的服务,可以考虑方法二的官方API(需付费)。批量查询时注意控制请求频率,并做好错误处理。

dsf33rf的博客 385

php 获取百度权重,PHP获取网站在爱站查询的百度权重

摘要自从谷歌不更新了PR后,很多站长在做友情链接时都以百度权重来衡量每个网站的好坏,其实百度并没有推出百度权重这么个东西,而是站长工具和爱站这两个站推出的参考值,通过分析网站的关键词以及网站设置的这些关键词有多少页面收录为依据,推算出网站的百度权重,也不是那么准确,这只能作为参考;这篇文章分享下,通过php正则获取爱站查询的网站百度权重然后生成一个图片,可以很方便的调用查看网站的百度权重值,演示请...

weixin_42517137的博客 421

爱生活,爱编程——纪念PHP编码两万行

    第一次听到PHP那时我还是大一,只是个懂得用Dreamweaver+Photoshop做网页就自以为是令人讨厌的家伙。当时身边有个真正的高手,他姓韩,此人之强令我瞠目结舌,刚上大一就懂ASP和PHP,并且相关的MySQL、MSSQL无一不通,估计是在高中或着更早就开始了他的编程生涯。在此人的影响下,我觉得堂堂一个计算机系的学生老做些静态网页,有损计算机系的形象,于是在网上搜索技术文章,开始

Nomad & His Life 2501
上一篇: Mac上PHP开发竟这么坑? 且看我的心酸历程!
下一篇: PHP版本迁移踩坑无数? 不看这篇会怀疑人生!
普通网友
博客等级 码龄2年 32粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值