[返回编程技术首页]·[所有跟帖]·[ 回复本帖 ] ·[热门原创] ·[繁體閱讀]·[坛主管理]

从0到删库跑路:PHP纯白入门(1)

送交者: assvenger[♀☆MAGA24☆♀] 于 2024-01-01 22:48 已读 1973 次 5赞  

assvenger的个人频道

+关注
感受wecode兄启发https://web.6parkbbs.com/index.php?act=view&tid=4001438
本文是给那些对学习PHP编程开发感兴趣,但却又不知从何开始的初学者。

先给自己挖个坑,打算
做成系列。

PHP纯白入门 (1)

目标:用现代PHP方式完成

一个最基本的PHP服务器Hello world
一个最基本的PHP cli(命令行界面) Hello world

1. 安装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-fpm

COPY ./app /app
WORKDIR /app

RUN apt-get update && apt-get install -y \
        && build-essential \
        && locales \
        && git \
        && vim \
        && curl \
        && apt-utils \
        && libzip-dev \
        && zip \
        && unzip

RUN 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/composer

3.2 创建docker-compose.yml

services:
    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:/app

3.3 创建folder和files
又臭又长,但任何项目只用做一次,以后基本不变。

.docker/reverse-proxy/nginx.conf

server {
    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.php

require __DIR__.'/../vendor/autoload.php';

echo Demo6ParkHome::GREETING;

app/src/Command/HelloWorldCommand.php

namespace 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.php

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

composer dump-autoload

这步的目标是使用composer,php的package management tool。
composer可以安装卸载开源的php package,也提供PSR-4 autoload服务。(以后可以写一次php autoload的帖子)。

5. 再次在browser里打开http://127.0.0.1
恭喜,这次能看到php服务器回应的Hello world

5.1 回到Docker desktop。在同一个Exec 命令行里运行
composer hello-world
恭喜,成功实现php cli Hello world

下期我们会分析这期代码,然后尝试改进。
贴主:assvenger于2024_01_01 23:07:08编辑
喜欢assvenger朋友的这个贴子的话, 请点这里投票,“赞”助支持!

已标注为assvenger的原创内容,若需转载授权请联系网友本人。若违规侵权,请联系我们

所有跟帖:   ( 主贴楼主有权删除不文明回复,拉黑不受欢迎的用户 )

NodeJS是运行Javascript的环境 (无内容) - gonewithsmoke (0 bytes) 01/03/24
谢谢分享,已加100银元! (无内容) - wecode (0 bytes) 01/02/24
谢谢 (无内容) - assvenger (0 bytes) 01/02/24

用户名: 密码: [--注册ID--]

标 题:

粗体 斜体 下划线 居中 插入图片插入图片 插入Flash插入Flash动画


     图片上传  Youtube代码器  预览辅助

打开微信,扫一扫[Scan QR Code]
进入内容页点击屏幕右上分享按钮

楼主前期社区热帖:

>>>>查看更多楼主社区动态...



[ 留园条例 ] [ 广告服务 ] [ 联系我们 ] [ 个人帐户 ] [ 创建您的定制新论坛频道 ] [ Contact us ]