Tôi đã thử tạo phần mềm trung gian thông qua
$ composer mezzio:middleware:create "App\XClacksOverheadMiddleware"
Tôi đang đối mặt với lỗi
Không có lệnh nào được định nghĩa trong “mezzio. phần mềm trung gian” không gian tên
Bất kỳ gợi ý hữu ích, xin vui lòng
Thanks
Bắt đầu sử dụng Symfony sau 10 phút. Chương này sẽ hướng dẫn bạn một số khái niệm quan trọng nhất đằng sau Symfony và giải thích cách bạn có thể bắt đầu nhanh chóng bằng cách hiển thị cho bạn một dự án đơn giản đang hoạt động
Nếu bạn đã từng sử dụng một web framework trước đây, bạn sẽ cảm thấy quen thuộc với Symfony. Nếu không, chào mừng bạn đến với một cách phát triển ứng dụng web hoàn toàn mới
Trước tiên, hãy kiểm tra xem phiên bản PHP được cài đặt trên máy tính của bạn có đáp ứng các yêu cầu của Symfony không. 5. 3. 3 hoặc cao hơn. Sau đó, mở bảng điều khiển và thực hiện lệnh sau để cài đặt phiên bản Symfony mới nhất trong thư mục
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
01
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
Ghi chú
Composer là trình quản lý gói được sử dụng bởi các ứng dụng PHP hiện đại và là cách duy nhất được đề xuất để cài đặt Symfony. Để cài đặt Trình soạn thảo trên hệ thống Linux hoặc Mac của bạn, hãy thực hiện các lệnh sau
1 2
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
Để cài đặt Trình soạn thảo trên hệ thống Windows, hãy tải xuống trình cài đặt thực thi
Xin lưu ý rằng lần đầu tiên bạn cài đặt Symfony, có thể mất vài phút để tải xuống tất cả các thành phần của nó. Khi kết thúc quá trình cài đặt, trình cài đặt sẽ yêu cầu bạn cung cấp một số tùy chọn cấu hình cho dự án Symfony. Đối với dự án đầu tiên này, bạn có thể bỏ qua cấu hình này một cách an toàn bằng cách nhấn phím
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
1 nhiều lầnTrước khi chạy Symfony lần đầu tiên, hãy thực hiện lệnh sau để đảm bảo rằng hệ thống của bạn đáp ứng tất cả các yêu cầu kỹ thuật
1 2
$ cd myproject/
$ php app/check.php
Sửa bất kỳ lỗi nào được báo cáo bởi lệnh và sau đó sử dụng máy chủ web tích hợp PHP để chạy Symfony
1
$ php app/console server:run
Xem thêm
Đọc thêm về máy chủ nội bộ trong sách dạy nấu ăn
Nếu bạn gặp lỗi `Không có lệnh nào được xác định trong không gian tên "máy chủ". `, thì có lẽ bạn đang sử dụng PHP 5. 3. Vậy là được rồi. Nhưng máy chủ web tích hợp chỉ khả dụng cho PHP 5. 4. 0 hoặc cao hơn. Nếu bạn có phiên bản PHP cũ hơn hoặc nếu bạn thích máy chủ web truyền thống như Apache hoặc Nginx, hãy đọc bài viết Định cấu hình Máy chủ Web
Mở trình duyệt của bạn và truy cập URL
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
2 để xem trang Chào mừng của SymfonyMột trong những mục tiêu chính của khung là giữ cho mã của bạn được tổ chức và cho phép ứng dụng của bạn dễ dàng phát triển theo thời gian bằng cách tránh trộn lẫn các lệnh gọi cơ sở dữ liệu, thẻ HTML và logic nghiệp vụ trong cùng một tập lệnh. Để đạt được mục tiêu này với Symfony, trước tiên bạn cần học một số khái niệm và thuật ngữ cơ bản
Symfony đi kèm với một số mã mẫu mà bạn có thể sử dụng để tìm hiểu thêm về các khái niệm chính của nó. Truy cập URL sau để được Symfony chào đón [thay thế Fabien bằng tên của bạn]
1
//localhost:8000/app_dev.php/demo/hello/Fabien
Ghi chú
Thay vì trang lời chào, bạn có thể thấy một trang trống hoặc một trang lỗi. Điều này là do cấu hình sai quyền thư mục. Có một số giải pháp khả thi tùy thuộc vào hệ điều hành của bạn. Tất cả đều được giải thích trong phần của cuốn sách chính thức
Những gì đang xảy ra ở đây?
3. Đây là một. Nó là điểm vào duy nhất của ứng dụng và nó đáp ứng tất cả các yêu cầu của người dùng;$ curl -sS //getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer
4. Đây là đường dẫn ảo đến tài nguyên mà người dùng muốn truy cập$ curl -sS //getcomposer.org/installer | php $ sudo mv composer.phar /usr/local/bin/composer
Trách nhiệm của bạn với tư cách là nhà phát triển là viết mã ánh xạ yêu cầu của người dùng [
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
4] tới tài nguyên được liên kết với nó [trang HTML $ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
6]Symfony định tuyến yêu cầu tới mã xử lý nó bằng cách khớp với URL được yêu cầu [i. e. đường dẫn ảo] đối với một số đường dẫn được định cấu hình. Các đường dẫn demo được xác định trong tệp cấu hình
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
7$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
0$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
1Thao tác này sẽ nhập tệp
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
8 nằm bên trong AcmeDemoBundle$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
2_______3_______3Ba dòng đầu tiên [sau nhận xét] xác định mã được thực thi khi người dùng yêu cầu tài nguyên "
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
9" [i. e. trang chào mừng mà bạn đã thấy trước đó]. Khi được yêu cầu, bộ điều khiển 1 20 sẽ được thực thi. Trong phần tiếp theo, bạn sẽ tìm hiểu chính xác điều đó có nghĩa là gì
Mẹo
Ngoài các tệp YAML, các tuyến có thể được định cấu hình trong các tệp XML hoặc PHP và thậm chí có thể được nhúng trong các chú thích PHP. Tính linh hoạt này là một trong những tính năng chính của Symfony, một framework không bao giờ áp đặt một định dạng cấu hình cụ thể cho bạn
Bộ điều khiển là một hàm hoặc phương thức PHP xử lý các yêu cầu gửi đến và trả về các phản hồi [thường là mã HTML]. Thay vì sử dụng các biến và hàm toàn cục PHP [như
1 21 hoặc
1 22] để quản lý các thông báo HTTP này, Symfony sử dụng các đối tượng. và. Bộ điều khiển đơn giản nhất có thể có thể tạo phản hồi bằng tay, dựa trên yêu cầu
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
4_______3_______5Symfony chọn bộ điều khiển dựa trên giá trị
1 23 từ cấu hình định tuyến.
1 20. Chuỗi này là tên logic của bộ điều khiển và nó tham chiếu phương thức
1 25 từ lớp
1 26
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
6$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
7Mẹo
Bạn có thể đã sử dụng tên lớp và phương thức đầy đủ -
1 27 - cho giá trị
1 23. Nhưng sử dụng tên logic ngắn hơn và cho phép linh hoạt hơn
Lớp
1 29 mở rộng lớp
$ cd myproject/
$ php app/check.php
0 tích hợp, cung cấp các phương thức phím tắt hữu ích, giống như phương thức tải và hiển thị mẫu [$ cd myproject/
$ php app/check.php
1]. Giá trị được trả về là một đối tượng $ cd myproject/
$ php app/check.php
2 được điền với nội dung được hiển thị. Vì vậy, nếu có nhu cầu, $ cd myproject/
$ php app/check.php
2 có thể được chỉnh sửa trước khi gửi tới trình duyệt$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
8$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
9Bất kể bạn làm như thế nào, mục tiêu cuối cùng của bộ điều khiển của bạn luôn là trả lại đối tượng
$ cd myproject/
$ php app/check.php
2 sẽ được gửi lại cho người dùng. Đối tượng $ cd myproject/
$ php app/check.php
2 này có thể được điền bằng mã HTML, đại diện cho chuyển hướng máy khách hoặc thậm chí trả về nội dung của hình ảnh JPG với tiêu đề $ cd myproject/
$ php app/check.php
6 của $ cd myproject/
$ php app/check.php
7Tên mẫu,
$ cd myproject/
$ php app/check.php
1, là tên lô-gic của mẫu và nó tham chiếu đến tệp $ cd myproject/
$ php app/check.php
9 bên trong AcmeDemoBundle [đặt tại 10]. Phần bên dưới sẽ giải thích tại sao điều này lại hữu ích
Bây giờ, hãy xem lại cấu hình định tuyến và tìm khóa
11
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
01 21
Tên logic của tệp chứa các tuyến đường
11 là
13 và đề cập đến tệp
14. Trong tệp này, các tuyến đường được định nghĩa là chú thích trên các phương thức hành động
1 22_______4_______3
Chú thích
15 tạo một tuyến đường mới khớp với đường dẫn
16 với phương thức
17. Bất kỳ chuỗi nào được đặt trong dấu ngoặc nhọn, như
18, được coi là một biến có thể được truy xuất trực tiếp dưới dạng đối số phương thức có cùng tên
Nếu bạn xem kỹ mã của bộ điều khiển, bạn có thể thấy rằng thay vì hiển thị một mẫu và trả về một đối tượng
$ cd myproject/
$ php app/check.php
2 như trước đây, nó chỉ trả về một mảng các tham số. Chú thích $ php app/console server:run
0 yêu cầu Symfony hiển thị mẫu cho bạn, chuyển cho nó từng biến của mảng được trả về. Tên của mẫu được hiển thị theo sau tên của bộ điều khiển. Vì vậy, trong ví dụ này, mẫu $ php app/console server:run
1 được hiển thị [đặt tại $ php app/console server:run
2]Bộ điều khiển hiển thị mẫu
$ php app/console server:run
2 [hoặc $ php app/console server:run
1 nếu bạn sử dụng tên logic]1 24_______4_______5
Theo mặc định, Symfony sử dụng Twig làm công cụ mẫu nhưng bạn cũng có thể sử dụng các mẫu PHP truyền thống nếu muốn. Phần thứ hai của hướng dẫn này sẽ giới thiệu cách các mẫu hoạt động trong Symfony
Bạn có thể đã tự hỏi tại sao từ này được sử dụng trong nhiều tên mà bạn đã thấy cho đến nay. Tất cả mã bạn viết cho ứng dụng của mình được sắp xếp theo gói. Trong Symfony speak, một gói là một tập hợp các tệp có cấu trúc [tệp PHP, biểu định kiểu, JavaScript, hình ảnh,. ] triển khai một tính năng duy nhất [blog, diễn đàn,. ] và có thể dễ dàng chia sẻ với các nhà phát triển khác. Hiện tại, bạn đã thao tác một gói, AcmeDemoBundle. Bạn sẽ tìm hiểu thêm về các gói trong phần cuối của hướng dẫn này
Bây giờ bạn đã hiểu rõ hơn về cách thức hoạt động của Symfony, hãy xem kỹ phần cuối của bất kỳ trang kết xuất Symfony nào. Bạn sẽ thấy một thanh nhỏ có logo Symfony. Đây là "Thanh công cụ gỡ lỗi web" và nó là người bạn tốt nhất của nhà phát triển Symfony
Nhưng những gì bạn nhìn thấy ban đầu chỉ là phần nổi của tảng băng chìm;
Tất nhiên, sẽ không khôn ngoan nếu bật công cụ này khi bạn triển khai ứng dụng của mình, do đó, theo mặc định, trình lược tả không được bật trong môi trường
$ php app/console server:run
5An đại diện cho một nhóm cấu hình được sử dụng để chạy ứng dụng của bạn. Symfony định nghĩa hai môi trường theo mặc định.
$ php app/console server:run
6 [phù hợp khi phát triển ứng dụng cục bộ] và $ php app/console server:run
5 [được tối ưu hóa khi thực thi ứng dụng trên sản xuất]Thông thường, các môi trường chia sẻ một số lượng lớn các tùy chọn cấu hình. Vì lý do đó, bạn đặt cấu hình chung của mình trong
$ php app/console server:run
8 và ghi đè lên tệp cấu hình cụ thể cho từng môi trường nếu cần$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
81 27
Trong ví dụ này, môi trường
$ php app/console server:run
6 tải tệp cấu hình 10, tệp này tự nhập tệp chung
$ php app/console server:run
8 và sau đó sửa đổi tệp đó bằng cách bật thanh công cụ gỡ lỗi webKhi bạn truy cập tệp
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
3 trong trình duyệt của mình, bạn đang thực thi ứng dụng Symfony của mình trong môi trường $ php app/console server:run
6. Để truy cập ứng dụng của bạn trong môi trường $ php app/console server:run
5, thay vào đó hãy truy cập tệp 15
Các tuyến demo trong ứng dụng của chúng tôi chỉ khả dụng trong môi trường
$ php app/console server:run
6. Do đó, nếu bạn cố truy cập vào URL 17, bạn sẽ gặp lỗi 404
Mẹo
Nếu thay vì sử dụng máy chủ web tích hợp sẵn của PHP, bạn sử dụng Apache đã bật
18 và tận dụng tệp
19 mà Symfony cung cấp trong
//localhost:8000/app_dev.php/demo/hello/Fabien
0, bạn thậm chí có thể bỏ qua phần 15 của URL. Mặc định
19 trỏ tất cả các yêu cầu tới bộ điều khiển phía trước
15
1
1 29
Để biết thêm chi tiết về môi trường, hãy xem bài viết ""
Xin chúc mừng. Bạn đã có trải nghiệm đầu tiên về mã Symfony. Điều đó không quá khó phải không? . Nếu bạn muốn tìm hiểu thêm về Symfony, hãy đi sâu vào phần tiếp theo. "Cái nhìn"