Debugging in php

Xin kính chào bằng hữu, cũng thỉnh thoảng mình cũng không viết bài xích share. Trong lấn này mình thích chia sẻ đến các bạn về những chuyên môn debug vào Laravel nhé. Nlỗi chúng ta biết đấy, Lúc chúng ta code thì phần nhiều phần nhiều họ không thể làm sao code đúng ngay lập tức được, tất cả lúc chạm mặt số đông lỗi mình trù trừ nó trường đoản cú đâu ra đời. Vì vậy, câu hỏi debug hết sức quan trọng đặc biệt Khi chúng ta xây dựng. Trong nội dung bài viết này, bản thân vẫn reviews các bạn phương pháp sử dụng một số trong những lao lý hỗ trợ bài toán trở nên tân tiến với debug trong Laravel 5 nhé.

Bạn đang xem: Debugging in php

*

Trước hết bọn họ đã cài project bắt đầu về bằng composer nhé

composer create-project --prefer-dist laravel/laravel demo_laravel_scoutSau đó họ vào file .env nhằm config database

DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=testDB_USERNAME=rootDB_PASSWORD=Chúng ta đã thực hiện câu lệnh php artisan migrate để nó migration những bảng có sẵn nhé nhằm họ cần sử dụng.Sau đó bản thân giả dữ liệu bằng phương pháp sau

php artisan tinkerfactory(AppUser::class, 100)->create();Sau kia bọn họ tạo ra UserController nhé.Xong phần set up cái project mẫu mã để bạn có thể thực hiện các tip debug dưới đây trải qua ví dụ nhé.

Hàm dd()

Hàm này được sử dụng vào bài toán mong muốn coi xem tác dụng trả ra là cái gì. Nó được dùng để ship hàng cho Việc bạn có nhu cầu coi Áp sạc ra của dữ liệu. Chúng ta liên tiếp sau khoản thời gian query dứt nó trả về cái gì , liệu nó là Collection xuất xắc Eloquent, hay là 1 mảng dữ liệu gì đó. đa phần lúc chúng ta sử dụng tlỗi viện Transformer để trả về hình trạng tài liệu theo một quy chuẩn làm sao đó... Việc dd() ra tài liệu đầu ra output giúp chúng ta dễ dãi trong vấn đề hiển thị hiệu quả kia ra một phương pháp dễ ợt.

namespace AppHttpControllers;use IlluminateHttpRequest;use AppUser;class UserController extends Controller public function index(Request $request) $users = User::all(); dd($users); return $users; Bây giờ đồng hồ bọn họ vẫn mang về toàn bộ những User cơ mà bọn họ trù trừ kết quả trả về nhỏng làm sao cả thì chúng ta cũng có thể cần sử dụng hàm dd() để rất có thể xem được nó trả về rất nhiều gì nhé.Kết quả là nlỗi này

*
Nếu như những bạn muốn coi rõ hơn thế nữa vào User nó bao gồm nằm trong tính gì thì các bạn cđọng ấn vào để xem nhé, rất chi tiết.

Hàm var_dump()

Hàm var_dump() cũng như như dd() , nó cũng trở nên in ra đọc tin của phát triển thành có mẫu mã dữ liệu của biến và quý hiếm.

Tương trường đoản cú như vậy bản thân cũng trở thành chuyển đổi code như sau

namespace AppHttpControllers;use IlluminateHttpRequest;use AppUser;class UserController extends Controller public function index(Request $request) $users = User::all(); var_dump($users); return $users; Một điều đặc trưng các các bạn sẽ thấy kia đó là Khi gặp mặt hàm var_dump() công tác của chúng ta không giới hạn mà vẫn chạy tiếp cho tới đoạn return $users. Vì rứa khi mong muốn ngừng thì các bạn yêu cầu kết phù hợp với die() nhé

namespace AppHttpControllers;use IlluminateHttpRequest;use AppUser;class UserController extends Controller public function index(Request $request) $users = User::all(); var_dump($users); die(); return $users;

*
Nó đã trả ra đến chúng ta một chuỗi xì xằng để format lại chúng ta ấn CTRL + U của trình chú ý chrome nhé, thì nó vẫn ra cho chính mình như này quan sát nó dễ dàng chú ý rộng.
*

print_r()

Hàm print_r() sẽ in thay đổi ra công bố của biến truyền vào một trong những cách dễ hiểu, nó liên tiếp được kết hợp với thẻ trong số trường vừa lòng in mảng, đối tượng,...

namespace AppHttpControllers;use IlluminateHttpRequest;use AppUser;class UserController extends Controller public function index(Request $request) $users = User::all(); echo ""; print_r($users); echo ""; return $users; Kết trái hiển thị

*
Thật dễ ợt nên không chúng ta, tôi vừa trình làng qua một số trong những hàm của PHP rồi. Nối tiếp nội dung bài viết, bản thân vẫn reviews đến các bạn về Laravel Logger nhé.

Laravel Logger

Logging là 1 hào kiệt thịnh hành, và mặc định Laravel sử dụng Monolog đến câu hỏi ghi tất cả log cần thiết, nó là 1 trong những tlỗi viện phổ cập PHPhường logging. Một điều mà Monolog mà lại nó đưa về rất lôi cuốn là nó hỗ trợ một interface tầm thường đến chúng ta có thể viết log bất cứ sản phẩm gì, đơn giản và dễ dàng là nó ghi ra tệp tin log giỏi mang đến áp dụng bến đa số third-tiệc nhỏ log management services.

Xem thêm: Khóa Học Lập Trình Php Tphcm, Khóa Học Lập Trình Web Php Ở Tphcm

Monolog gồm tính linh hoạt cao, nó hoàn toàn có thể gửi lỗi nhưng được log lại vào tệp tin , socket, tin nhắn, databases cùng một vài các website service không giống nữa. Laravel thường xuyên cấu hình thiết lập Monolog thông qua tệp tin cấu hình.

Logging configuration

File config logging vẫn nằm ở vị trí tlỗi mục config/logging.php. Trước hết họ đã thấy 2 cách thức của Monolog được import vào để cung cấp việc cách xử trí cho những channel. Các các bạn sẽ thấy từ bỏ khóa được return về defaultchannels. Các kênh là hồ hết nơi thừa nhận nhiệm vụ báo log đến họ.

return < /* |-------------------------------------------------------------------------- | Default Log Channel |-------------------------------------------------------------------------- | | This option defines the mặc định log channel that gets used when writing | messages lớn the logs. The name specified in this option should match | one of the channels defined in the "channels" configuration array. | */ "default" => env("LOG_CHANNEL", "stack"), /* |-------------------------------------------------------------------------- | Log Channels |-------------------------------------------------------------------------- | | Here you may configure the log channels for your application. Out of | the box, Laravel uses the Monolog PHPhường logging library. This gives | you a variety of powerful log handlers / formatters lớn utilize. | | Available Drivers: "single", "daily", "slack", "syslog", | "errorlog", "monolog", | "custom", "stack" | */ "channels" => < "stack" => < "driver" => "stack", "channels" => <"daily">, "ignore_exceptions" => false, >, "single" => < "driver" => "single", "path" => storage_path("logs/laravel.log"), "level" => "debug", >, "daily" => < "driver" => "daily", "path" => storage_path("logs/laravel.log"), "level" => "debug", "days" => 14, >, "slack" => < "driver" => "slack", "url" => env("LOG_SLACK_WEBHOOK_URL"), "username" => "Laravel Log", "emoji" => ":boom:", "level" => "critical", >, "papertrail" => < "driver" => "monolog", "level" => "debug", "handler" => SyslogUdpHandler::class, "handler_with" => < "host" => env("PAPERTRAIL_URL"), "port" => env("PAPERTRAIL_PORT"), >, >, "stderr" => < "driver" => "monolog", "handler" => StreamHandler::class, "formatter" => env("LOG_STDERR_FORMATTER"), "with" => < "stream" => "php://stderr", >, >, "syslog" => < "driver" => "syslog", "level" => "debug", >, "errorlog" => < "driver" => "errorlog", "level" => "debug", >, >,>;Nlỗi chúng ta thấy có không ít những kênh đảm nhiệm Việc báo log cho tất cả những người sử dụng. stack là kênh khoác định nhằm gửi log. Chúng bản thân vẫn đi tìm đọc cụ thể rộng về thông số kỹ thuật những kênh này nhé.

Configuration within each channel

Ứng cùng với mỗi key channel các bạn có thể bắt gặp một mảng các key không giống nhau được sử dụng.

Đầu tiên là drivers:

Đó là 4 driver nhưng đang gồm tự phiên bản 5.7 trnghỉ ngơi về trước, từ bỏ phiên bạn dạng 5.7 trsinh hoạt đi thì được tư vấn thêm một vài driver nữa

stack: lúc áp dụng driver này tứ đọng là chúng ta cũng có thể sử dụng những logging channel cùng nhau. khi đó các bạn nên set thêm key channel với giá trị là một mảng thương hiệu những key channel nhé.slack: Channel này được cho phép các bạn gửi log mang đến the popular social channel. lấy ví dụ nlỗi chúng ta sử dụng chatwork, chúng ta có thể báo lỗi về lời nhắn mang lại chúng ta.monolog: Đây là lúc monolog sử dụng lại bao gồm nó, với Lúc các bạn áp dụng driver này các bạn sẽ thực hiện các method của chính nó nữa. Các chúng ta áp dụng nó trải qua trường đoản cú khóa handler nhé.

Writing log message

Nlỗi các bạn biết đấy, bọn họ hoàn toàn hoàn toàn có thể ghi log vào vào thỏng mục storage/logs bằng cách áp dụng facade Log. Nhật ký lỗi được ghi nhận với 8 cấp độ khác nhau theo tiêu chuẩn RFC 5424

Log::emergency($message);Log::alert($message);Log::critical($message);Log::error($message);Log::warning($message);Log::notice($message);Log::info($message);Log::debug($message);Trong quy trình ghi log, ví như bạn muốn thêm các ban bố để log được chi tiết rộng. Chúng ta truyền vào tsay mê số máy nhì nhé

Log::info("User failed to lớn login.", <"id" => $user->id>);Đôi khi chúng ta cũng muốn là nhật cam kết ghi log kênh như thế nào được gửi đến thì bọn họ vẫn vẫn sử dụng cách làm channel nhé.

Log::stack(<"single", "slack">)->info("Something happened!");Laravel DebugbarLaravel Debugbar là một package giúp tích hòa hợp PHP.. Debyg Bar vào framework Laravel, sau khoản thời gian họ cài đặt package này, vào mỗi website của họ đã thấy một tkhô hanh mức sử dụng ngơi nghỉ phía bên dưới cùng, nó chứa tương đối nhiều lên tiếng hữu ích mang lại ta để chúng ta có thể khám nghiệm lỗi của ứng dụng.

*
Về biện pháp thiết lập bạn cũng có thể vào hẳn trong package xem nhé.Các chúng ta chăm chú rằng bọn họ yêu cầu nhằm Laravel DebugBar ở bị tiêu diệt độ hoạt động Lúc cải cách và phát triển vận dụng, nó rất có thể làm lờ lững vận dụng đi vày bắt buộc thu thập các đọc tin phục vụ đến bài toán debug.

Xem thêm: How To Install Php 7

Như chúng ta chú ý bên trên hình hình ảnh trên đấy, nó gồm các tab nhằm phục vụ mang đến vấn đề chúng ta debug tùy thuộc vào mục tiêu của bọn họ. lấy ví dụ vào tab message chúng ta nhưng mà mong muốn debug vào tab này thì chúng ta cũng có thể dùng

Debugbar::info($object);Debugbar::error("Error!");Debugbar::warning("Watch out…");Debugbar::addMessage("Another message", "mylabel");vào từng khu vực mà lại chúng ta ước muốn debug. Hay bọn họ mong mỏi hiển thị thời hạn thực hiện một hành động làm việc tab Timeline thì họ đã sử dụng

// C1: Nhóm các đoạn code đề nghị đo thời hạn triển khai vào Debugbar::startMeasure() với Debugbar::stopMeasure()Debugbar::startMeasure("render","Time for rendering");$post = AppPost::where("email", "")->get()Debugbar::stopMeasure("render");// C2: Sử dụng phương thức Debugbar::addMeasure()$start = microtime(true);$post = AppPost::where("email", "")->get()$over = microtime(true);Debugbar::addMeasure("total query: ", $start, $end);// C3: Knhì bào hàm Closure với thủ tục measure()Debugbar::measure("Thời gian tiến hành tróc nã vấn", function() $post = AppPost::where("email", "")->get());Hiển thị exception

try throw new Exception("foobar"); catch (Exception $e) Debugbar::addThrowable($e);Khi chúng ta vào website và vào tab Queries thì những các bạn sẽ thấy câu truy vấn sau cùng được Laravel có mặt nhằm tiến hành truy nã vấn cơ sở tài liệu, nó khá đầy đủ các biết tin nhập lệ. vân vân với mây mây...Để bật tắt chế độ hoạt động Laravel Debugbar vào áp dụng thì chúng ta đang trải qua method Debugbar::enable() với Debugbar::disable().

Lời kết

Vậy qua một trong những tip debug nhưng bản thân tốt dùng bên trên thì hy vọng rằng cũng phần nào giúp được các bạn trong quá trình chúng ta làm cho project, nó ko được trẻ khỏe như chế độ debug của những IDE của microsoft tuy thế ý muốn rằng cùng với lượng ban bố nhưng mà nó hoàn toàn có thể hỗ trợ cũng góp các bạn phần làm sao nhận biết được dấu hiệu của lỗi với được bố trí theo hướng sửa. Cảm ơn chúng ta đang đọc nội dung bài viết của bản thân mình. Have sầu a nice day !!


Chuyên mục: