php 系列:php web 开发基础,phpwebphp是动态类型的web开发的脚本语言,php以页面文件作为加载和运行的单元,php现在有了composer作为开发包管理。
1.使用composer管理依赖自从.net开发用了nuget管理程序集依赖,我就再也离不开它了,幸亏java中也有maven管理jar包,虽然开源中国的镜像太慢但还有ibiblio的镜像可用,php现在终于有了composer(参考1)用来管理资源包。
(1)全局安装(参考2)
在指定安装目录中执行命令行:
php -r readfile('https://getcomposer.org/installer'); | php
在指定安装目录中执行命令行:
echo @php %~dp0composer.phar %*>composer.bat
将指定安装目录添加到环境变量的系统变量path中。
(2)项目安装
在项目目录中执行命令行:
php -r readfile('https://getcomposer.org/installer'); | php
使用 composer.json 文件配置依赖。如配置php中常用的日志组件:
{ require: { monolog/monolog: 1.0.* }}
使用命令行命令 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://packagist.phpcomposer.com
项目配置使用如下命令行:
composer config repo.packagist composer http://packagist.phpcomposer.com
当然最简单的方式是直接修改composer.config文件:
{ require: { monolog/monolog: 1.0.* }, repositories: { packagist: { type: composer, url: http://packagist.phpcomposer.com } }}
(5)自动加载
composert 在 vendor 目录下自动生成并维护包含了全部依赖信息的 autoload.php 文件。因此我们只需要通过 autoload.php 使用第三方库即可。例如:
pushhandler(new monolog\handler\streamhandler('app.log', monolog\logger::warning));$log->addwarning('foo');?>
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,作为演示没有对数据长度进行验证,也没有使用对称加密解密。
参考(1)https://getcomposer.org/doc/00-intro.md
(2)http://docs.phpcomposer.com/00-intro.html
http://www.bkjia.com/phpjc/1092700.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1092700.htmltecharticlephp 系列:php web 开发基础,phpweb php是动态类型的web开发的脚本语言,php以页面文件作为加载和运行的单元,php现在有了composer作为开发包管...