PHP 系列:PHP Web 开发基础,phpweb
PHP是动态类型的Web开发的脚本语言,PHP以页面文件作为加载和运行的单元,PHP现在有了Composer作为开发包管理。
1.使用Composer管理依赖
自从.NET开发用了Nuget管理程序集依赖,我就再也离不开它了,幸亏Java中也有Maven管理jar包,虽然开源中国的镜像太慢但还有ibiblio的镜像可用,PHP现在终于有了Composer(参考1)用来管理资源包。
(1)全局安装(参考2)
在指定安装目录中执行命令行:
php -r <span>"</span><span>readfile('https://getcomposer.org/installer');</span><span>"</span> | php
在指定安装目录中执行命令行:
<span>echo</span> @php <span>"</span><span>%~dp0composer.phar</span><span>"</span> %*>composer.bat
将指定安装目录添加到环境变量的系统变量Path中。
(2)项目安装
在项目目录中执行命令行:
php -r <span>"</span><span>readfile('https://getcomposer.org/installer');</span><span>"</span> | php
使用 composer.json 文件配置依赖。如配置PHP中常用的日志组件:
<span>{ </span>"require"<span>: { </span>"monolog/monolog": "1.0.*"<span> } }</span>
使用命令行命令 php composer.phar install 安装依赖的资源包。如果进行了全局安装,只需要执行composert install。
这会将生成 composer.lock 文件并依赖下载资源包到 vendor 目录,composer.lock 文件是下载依赖时真正使用的文件。
(3)升级依赖
项目使用 composer.lock 文件维护依赖,如果我们需要使用更新版本的依赖,需要按需修改 composer.json 文件并执行更新命令。全局安装:composer update,项目安装使用:php composer.phar update。
(4)资源包查询与镜像
可以使用http://packagist.org检索资源包,好比.NET中的https://www.nuget.org/packages/和Java中的http://search.maven.org/。
可以使用http://packagist.phpcomposer.com镜像,全局配置使用如下命令行命令:
composer config -g repo.packagist composer http:<span>//</span><span>packagist.phpcomposer.com</span>
项目配置使用如下命令行:
composer config repo.packagist composer http:<span>//</span><span>packagist.phpcomposer.com</span>
当然最简单的方式是直接修改composer.config文件:
<span>{ </span>"require"<span>: { </span>"monolog/monolog": "1.0.*"<span> }, </span>"repositories"<span>: { </span>"packagist"<span>: { </span>"type": "composer"<span>, </span>"url": "http://packagist.phpcomposer.com"<span> } } }</span>
(5)自动加载
Composert 在 vendor 目录下自动生成并维护包含了全部依赖信息的 autoload.php 文件。因此我们只需要通过 autoload.php 使用第三方库即可。例如:
<?<span>php </span><span>require</span> 'vendor/autoload.php'<span>; </span><span>$log</span> = <span>new</span> Monolog\Logger('name'<span>); </span><span>$log</span>->pushHandler(<span>new</span> Monolog\Handler\StreamHandler('app.log', Monolog\Logger::<span>WARNING)); </span><span>$log</span>->addWarning('Foo'<span>); </span>?>
2.PHP基础
(1)PHP类似C语系语法的脚本语言。
如果你有C或C++语言的基础,那么很多概念和语法都可以直接对照。从大小写敏感到注释,从数据类型、函数、参数传递和成员引用等。从C/C++/Java/C#这一体系学习下来,再加上JavaScript脚本语言的基础,加点PHP的技能点水到渠成。
(2)PHP是动态类型语言。
PHP有和C语言等强类型语言一样的数据类型定义,支持的类型也相仿,只是PHP中同一变量在不同时刻可以表示不同类型的数据,但同一时刻,每个变量都相当于强类型中的指定类型的变量。因此对于PHP,更适合的称呼是动态类型。习惯使用Java/C#等强类型语言总会对动态类型的脚本语言心存焦虑,可以通过PHP的类型检查函数减少这方面的顾虑(is_bool\is_integer\is_double\is_string\is_null等)。
(3)PHP以页面文件方式运行。
无论如何使用PHP,PHP的都是以页面文件方式运行的,这和运行在浏览器端的JavaScript方式类似,JavaScript文件只有在被加载到当前页面才能引用和执行,PHP也只有在通过include或required方式加载后才能引用和执行,即使后续添加的 __autoload和spl_autoload依然只是简化而非改变了其加载引用的本质。
(4)PHP不需要复杂的框架
PHP天生是处理Web请求的,HTTP协议相关的内容是PHP的重点,一般来讲,除了纵向请求的处理,横向的认证和授权控制部分,其他部分不应该过于依赖PHP,如果通过耦合性较高的Web框架使用PHP本身就是错误的。由于PHP本身的运行和加载方式,导致PHP天生就适合复用各种组件而非使用框架来解决问题。成天寄希望于框架的人,要么是不想在PHP基础要么是不想在业务逻辑基础上下功夫。
3.PHP常用文件
(1)配置文件config.php
应用配置的各种信息定义在一个或多个配置文件中。一般每次请求都会加载配置文件,配置文件中不只包含了数据库连接信息,如应用MVC时,每次请求都会加载配置文件以便读取所有URL和Controller以及View之间的规则。
(2)入口文件index.php
处理首页请求或全部请求的文件。index.php在实现PHP的MVC时是天然的前段控制器FrontController,由index.php负责纵向的处理请求转发,横向的认证和授权等处理文件,等也需要在index.php中加载。
(3)数据访问文件database.php
database.php是工具类中最主要的用于数据访问的文件,为了避免数据访问中重复性出现的代码,一般的PHP应用程序都会独立的一个或一组数据访问文件。
4.自定义Session
在PHP中自定义Session比Java中方便多了,只需要将自定义的函数名称做为参数传递给session_set_save_handler($open, $close, $read, $write, $destroy, $gc)作为参数即可,我们自定义一个使用cookie作为存储的session,作为演示没有对数据长度进行验证,也没有使用对称加密解密。
<?<span>php </span><span>function</span><span> open_session() { </span><span>return</span> <span>true</span><span>; } </span><span>function</span><span> close_session() { </span><span>return</span> <span>true</span><span>; } </span><span>function</span> read_session(<span>$id</span><span>) { </span><span>if</span> (<span>$_COOKIE</span>[<span>$id</span><span>]) { </span><span>return</span> <span>base64_decode</span>(<span>$_COOKIE</span>[<span>$id</span><span>]); } </span><span>return</span> ''<span>; } </span><span>function</span> write_session(<span>$sid</span>, <span>$data</span><span>) { </span><span>if</span> (<span>$_COOKIE</span>['session_end'<span>]) { </span><span>setcookie</span>(<span>$sid</span>, <span>base64_encode</span>(<span>$data</span>), <span>$_COOKIE</span>['session_end'<span>]); } </span><span>else</span><span> { </span><span>$start</span> = <span>time</span>() + <span>session_get_cookie_params</span>()['lifetime'<span>]; </span><span>setcookie</span>('session_end', <span>$start</span>, <span>$start</span><span>); </span><span>setcookie</span>(<span>$sid</span>, <span>base64_encode</span>(<span>$data</span>), <span>$start</span><span>); } </span><span>return</span> <span>true</span><span>; } </span><span>function</span><span> destroy_session() { </span><span>$_Session</span> = <span>array</span><span>(); </span><span>return</span> <span>true</span><span>; } </span><span>function</span><span> gc_session() { </span><span>return</span> <span>true</span><span>; } </span><span>ini_set</span>("session.cookie_lifetime", "3600"<span>); </span><span>session_set_save_handler</span>('open_session', 'close_session', 'read_session', 'write_session', 'destroy_session', 'gc_session'<span>); </span><span>session_start</span><span>(); </span><span>$_SESSION</span>['count'] += 1<span>; </span><span>echo</span> <span>$_SESSION</span>['count'<span>]; </span><span>session_write_close</span><span>(); </span>?>
参考
(1)https://getcomposer.org/doc/00-intro.md
(2)http://docs.phpcomposer.com/00-intro.html

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP中使用clone关键字创建对象副本,并通过\_\_clone魔法方法定制克隆行为。1.使用clone关键字进行浅拷贝,克隆对象的属性但不克隆对象属性内的对象。2.通过\_\_clone方法可以深拷贝嵌套对象,避免浅拷贝问题。3.注意避免克隆中的循环引用和性能问题,优化克隆操作以提高效率。

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

HTTP缓存头的关键玩家包括Cache-Control、ETag和Last-Modified。1.Cache-Control用于控制缓存策略,示例:Cache-Control:max-age=3600,public。2.ETag通过唯一标识符验证资源变化,示例:ETag:"686897696a7c876b7e"。3.Last-Modified指示资源最后修改时间,示例:Last-Modified:Wed,21Oct201507:28:00GMT。

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP是一种服务器端脚本语言,用于动态网页开发和服务器端应用程序。1.PHP是一种解释型语言,无需编译,适合快速开发。2.PHP代码嵌入HTML中,易于网页开发。3.PHP处理服务器端逻辑,生成HTML输出,支持用户交互和数据处理。4.PHP可与数据库交互,处理表单提交,执行服务器端任务。

PHP在过去几十年中塑造了网络,并将继续在Web开发中扮演重要角色。1)PHP起源于1994年,因其易用性和与MySQL的无缝集成成为开发者首选。2)其核心功能包括生成动态内容和与数据库的集成,使得网站能够实时更新和个性化展示。3)PHP的广泛应用和生态系统推动了其长期影响,但也面临版本更新和安全性挑战。4)近年来的性能改进,如PHP7的发布,使其能与现代语言竞争。5)未来,PHP需应对容器化、微服务等新挑战,但其灵活性和活跃社区使其具备适应能力。

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

Dreamweaver Mac版
视觉化网页开发工具