从0到删库跑路:PHP纯白入门(1)
感受wecode兄启发https://web.6parkbbs.com/index.php?act=view&tid=4001438,
本文是给那些对学习PHP编程开发感兴趣,但却又不知从何开始的初学者。
先给自己挖个坑,打算做成系列。PHP纯白入门 (1)目标:用现代PHP方式完成一个最基本的PHP服务器Hello world
一个最基本的PHP cli(命令行界面) Hello world1. 安装Docker desktop下载:https://www.docker.com/products/docker-desktop/
安装会提示注册docker account,可以直接忽略。安装过程中需要几次reboot。Docker desktop打开后
注意左下角Docker engine状态,我们需要确认Engine running ✅2. 安装Text editor推荐Visual Studio Code(vscode),安装教程参考wecode兄的帖子。
https://web.6parkbbs.com/index.php?act=view&tid=4001438
Sublime text和PhpStorm($$$)也是不错的选择。
操作系统自带的text edit(Mac)/ notepad(Windows)也能满足需求。不过text editor能简化提高效率。3. 创建一个文件夹比如“docker-php”,用vscode打开
tips: 在vscode里有一个隐藏功能,可以从命令行界面直接打开vscode。使用shortcut
shift + ctrl + p (Windows)
shift + cmd + p (Mac)
搜索 “path”单击安装。以后就能在命令行里用 “vscode {FILE_PATH}”直接打开整个folder。3.1 创建一个新file “Dockerfile” FROM php:8.3.1-fpmCOPY ./app /app
WORKDIR /appRUN apt-get update && apt-get install -y \
&& build-essential \
&& locales \
&& git \
&& vim \
&& curl \
&& apt-utils \
&& libzip-dev \
&& zip \
&& unzipRUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
&& php composer-setup.php
&& php -r "unlink('composer-setup.php');"
&& mv composer.phar /usr/local/bin/composer3.2 创建docker-compose.ymlservices:
reverse-proxy:
image: nginx:1.25.3
ports:
- 80:80
volumes:
- ./.docker/web/nginx.conf:/etc/nginx/conf.d/nginx.conf
- ./app:/app
server:
build:
context: .
dockerfile: Dockerfile
volumes:
- ./app:/app3.3 创建folder和files
又臭又长,但任何项目只用做一次,以后基本不变。.docker/reverse-proxy/nginx.confserver {
listen 80 default_server;
root /app/public; index index.php index.html index.htm; location ~ .php$ {
fastcgi_pass server:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}app/public/index.phprequire __DIR__.'/../vendor/autoload.php';echo Demo6ParkHome::GREETING;app/src/Command/HelloWorldCommand.phpnamespace Demo6Park/Command;use Symfony/Component/Console/Command/Command;
use SymfonyComponent/Console/Input/InputInterface;
use Symfony/Component/Console/Output/OutputInterface;class HelloWorldCommand extends Command
{
public function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('Hello World'); return Command::Success;
}
}app/src/Home.phpnamespace Demo6Park;class Home {
const string GREETING = 'Hello World';
}app/composer.json{
"require": {
"symfony/console": "*"
},
"autoload": {
"psr-4": {
"Demo6Park\": "src/"
}
},
"scripts": {
"generate": "Demo6Park\Command\HelloWorldCommand"
}
}结构图4. 准备启动build & launch docker容器在vscode里,打开命令行
shortcut “ctrl + `” (不是‘,tilde的同一个键)执行
docker compose up -d成功执行后,docker desktop images会变成这样docker containers多一项 现在服务器已经启动,打开browser输入http://127.0.0.1。
恭喜,你会看到error!但我故意的。现代php不再重造轮子。我需要依赖第三方的开源package,因此在运行前我们需要安装这些package。单击server-1,选择Exec
在Docker desktop提供的命令行界面里,先后运行composer installcomposer dump-autoload这步的目标是使用composer,php的package management tool。
composer可以安装卸载开源的php package,也提供PSR-4 autoload服务。(以后可以写一次php autoload的帖子)。5. 再次在browser里打开http://127.0.0.1
恭喜,这次能看到php服务器回应的Hello world5.1 回到Docker desktop。在同一个Exec 命令行里运行
composer hello-world
恭喜,成功实现php cli Hello world下期我们会分析这期代码,然后尝试改进。
贴主:assvenger于2024_01_01 23:07:08编辑
已标注为assvenger的原创内容,若需转载授权请联系网友本人。若违规侵权,请联系我们
所有跟帖: ( 主贴楼主有权删除不文明回复,拉黑不受欢迎的用户 )