从零基础到专家:2024年PHP顶级YouTube频道和课程

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么PHP至今仍然重要?在哪里学习?

\n\n

在Web开发的世界里,PHP就像一把可靠的老式瑞士军刀。追求潮流的人不喜欢它,但78%的网站(包括Facebook、Wikipedia和WordPress)都运行在它之上。如果你想成为一名能解决实际问题的后端开发者,而不仅仅是“用React做前端”,那么PHP是你的选择。

\n\n

但问题是,90%的俄语PHP视频都是2008年的过时代码,其中mysql_connect()被认为是正常的。我们决定纠正这一点,并整理了顶级YouTube频道和课程,教授现代PHP 8、面向对象编程、PSR标准和框架。

\n\n

在这篇文章中,您将找到的不仅仅是一个链接列表,还有可以立即运行的实时代码示例,以及如何避免陷入“垃圾代码”的建议。

\n\n

我们如何筛选频道

\n\n

我们检查了YouTube上超过50个PHP频道和课程。筛选标准如下:

\n\n
    \n
  • 时效性 — 视频不超过2年,使用PHP 8.x
  • \n
  • 内容质量 — 生动的讲解,而不是单调地阅读文档
  • \n
  • 实践性 — 包含代码示例、作业或个人项目
  • \n
  • 对不同水平的实用性 — 从完全零基础到专业提升
  • \n
\n\n

开始吧!

\n\n

PHP顶级YouTube频道前五名(免费)

\n\n

1. PHP学校 — “程序员的数学”

\n\n

该频道的作者是一位拥有10年经验的实际后端开发者。他不仅展示代码,还解释为什么必须这样写。他关于PHP面向对象编程的播放列表尤其出色。

\n\n

视频中的示例:如何不正确地编写构造函数:

\n\n
// 不好的写法\nclass User {\n    public $name;\n    public $age;\n    public function __construct($data) {\n        $this->name = $data[0];\n        $this->age = $data[1];\n    }\n}\n\n// 好的写法\nclass User {\n    public function __construct(\n        private string $name,\n        private int $age\n    ) {}\n}\n
\n\n

为什么这很重要:类型声明和命名参数是PHP 8的标准。该频道通过实际例子进行了详细讲解。

\n\n

2. Laravel & PHP从零开始 — “3小时搭建你的博客”

\n\n

如果你想快速从理论转向实践,这个频道是你的选择。作者推出了一个系列“PHP入门:编写博客引擎”。不使用框架,只使用纯PHP,但采用现代方法(Composer、PSR-4、Twig模板引擎)。

\n\n

路由课程中的代码:

\n\n
// PHP 8的简单路由器\n$router = new Router();\n\n$router->get('/posts', function() {\n    $posts = Post::all();\n    require 'views/posts/index.php';\n});\n\n$router->post('/posts', function() {\n    $post = new Post($_POST);\n    $post->save();\n    header('Location: /posts');\n});\n
\n\n

建议:观看5-6节课后,尝试编写你自己的迷你框架。这是理解Laravel和Symfony工作原理的最佳方式。

\n\n

3. Vova的Web开发 — “PHP 8:新特性”

\n\n

简短精炼的视频(10-15分钟),介绍PHP 8的具体功能:属性、命名参数、match表达式、枚举。非常适合已经掌握基础知识并希望将技能提升到现代水平的人。

\n\n

枚举示例(PHP 8.1):

\n\n
enum Status: string {\n    case Active = 'active';\n    case Inactive = 'inactive';\n    case Pending = 'pending';\n\n    public function label(): string {\n        return match($this) {\n            self::Active => '活跃',\n            self::Inactive => '不活跃',\n            self::Pending => '待处理',\n        };\n    }\n}\n\necho Status::Active->label(); // '活跃'\n
\n\n

4. 后端开发者 — “面向专业人士的Symfony 6”

博客

书籍推荐