Table of Contents
PHP 系列:PHP Web 开发基础,phpweb
1.使用Composer管理依赖
2.PHP基础
3.PHP常用文件
4.自定义Session
参考
Home Backend Development PHP Tutorial PHP 系列:PHP Web 开发基础,phpweb_PHP教程

PHP 系列:PHP Web 开发基础,phpweb_PHP教程

Jul 12, 2016 am 09:00 AM
php web dynamic Base develop yes of type series Script

PHP 系列:PHP Web 开发基础,phpweb

PHP是动态类型的Web开发的脚本语言,PHP以页面文件作为加载和运行的单元,PHP现在有了Composer作为开发包管理。

1.使用Composer管理依赖

自从.NET开发用了Nuget管理程序集依赖,我就再也离不开它了,幸亏Java中也有Maven管理jar包,虽然开源中国的镜像太慢但还有ibiblio的镜像可用,PHP现在终于有了Composer(参考1)用来管理资源包。

(1)全局安装(参考2)

在指定安装目录中执行命令行:

1

php -r <span>"</span><span>readfile('https://getcomposer.org/installer');</span><span>"</span> | php

Copy after login
Copy after login

在指定安装目录中执行命令行:

1

<span>echo</span> @php <span>"</span><span>%~dp0composer.phar</span><span>"</span> %*>composer.bat

Copy after login

将指定安装目录添加到环境变量的系统变量Path中。

(2)项目安装

在项目目录中执行命令行:

1

php -r <span>"</span><span>readfile('https://getcomposer.org/installer');</span><span>"</span> | php

Copy after login
Copy after login

使用 composer.json 文件配置依赖。如配置PHP中常用的日志组件:

1

2

3

4

5

<span>{

    </span>"require"<span>: {

        </span>"monolog/monolog": "1.0.*"<span>

    }

}</span>

Copy after login

使用命令行命令 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镜像,全局配置使用如下命令行命令:

1

composer config -g repo.packagist composer http:<span>//</span><span>packagist.phpcomposer.com</span>

Copy after login

项目配置使用如下命令行:

1

composer config repo.packagist composer http:<span>//</span><span>packagist.phpcomposer.com</span>

Copy after login

当然最简单的方式是直接修改composer.config文件:

1

2

3

4

5

6

7

8

9

10

11

<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>

Copy after login

(5)自动加载

Composert 在 vendor 目录下自动生成并维护包含了全部依赖信息的 autoload.php 文件。因此我们只需要通过 autoload.php 使用第三方库即可。例如:

1

2

3

4

5

6

<?<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>?>

Copy after login

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

<?<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>?>

Copy after login

参考

(1)https://getcomposer.org/doc/00-intro.md

(2)http://docs.phpcomposer.com/00-intro.html

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1092700.htmlTechArticlePHP 系列:PHP Web 开发基础,phpweb PHP是动态类型的Web开发的脚本语言,PHP以页面文件作为加载和运行的单元,PHP现在有了Composer作为开发包管...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

CakePHP Logging CakePHP Logging Sep 10, 2024 pm 05:26 PM

Logging in CakePHP is a very easy task. You just have to use one function. You can log errors, exceptions, user activities, action taken by users, for any background process like cronjob. Logging data in CakePHP is easy. The log() function is provide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP is an open source MVC framework. It makes developing, deploying and maintaining applications much easier. CakePHP has a number of libraries to reduce the overload of most common tasks.

See all articles