lensapp-eu/lens-php 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

lensapp-eu/lens-php

Composer 安装命令:

composer require lensapp-eu/lens-php

包简介

Lens - stuur debug-payloads naar de Lens desktop-app

README 文档

README

Send debug payloads from your PHP or Laravel project straight to the Lens desktop app. Instead of polluting your response with dd() or var_dump(), use lens(...) to send neatly rendered data to a separate window, with syntax highlighting, labels, colors and the line it came from.

lens('hello');
lens($user)->color('green')->label('Signed-in user');
lens(['order' => $order, 'total' => $amount]);

Requirements

  • PHP 8.0 or higher (with ext-curl and ext-json)
  • The Lens desktop app must be running, it receives and displays the payloads. (Separate application; listens on 127.0.0.1:23600 by default.)

Installation

Install as a dev dependency (it's a debugging tool, just like dd()):

composer require lensapp-eu/lens-php --dev

In Laravel the package is auto-discovered. Nothing else to configure.

Note: because this is a dev dependency, the lens() helper does not exist in production (composer install --no-dev). So don't leave lens() calls in code that ships to production - treat it like dd(). See Prevent commits with lens().

Usage

The global lens() helper is available everywhere:

// A single value
lens('checkpoint reached');

// Multiple values at once
lens($request->all(), $user, $total);

// Chaining: label and color
lens($order)->label('New order')->color('green');

// Clear the screen
\LensApp\Lens\Lens::clear();

Available colors: red, green, blue, orange, purple, gray.

In Blade views you can use the @lens directive:

@lens($user)
@lens(['cart' => $cart], 'Checkout')

Exceptions

Exceptions show up as a red item with an expandable stack trace:

lens($exception);                          // a Throwable is detected automatically
\LensApp\Lens\Lens::exception($e);   // explicit

In Laravel, reported exceptions are sent to Lens automatically. Disable it with:

LENS_CATCH_EXCEPTIONS=false

Laravel streams

Stream Laravel internals straight to Lens. Toggle per environment in your .env:

LENS_QUERIES=true   # every DB query (SQL + bindings + time)
LENS_MAILS=true     # outgoing mails, with a rendered HTML preview
LENS_JOBS=true      # queue jobs (processing / processed / failed)
LENS_EVENTS=true    # application events (framework noise filtered out)
LENS_MODELS=true    # Eloquent created / updated / deleted / restored

Or enable them in code:

\LensApp\Lens\Lens::showQueries();
\LensApp\Lens\Lens::showMails();   // shows the email's HTML in a sandboxed preview
\LensApp\Lens\Lens::showJobs();
\LensApp\Lens\Lens::showEvents();
\LensApp\Lens\Lens::showModels();

Pause execution

Pause your code until you click Continue or Stop in the Lens app:

\LensApp\Lens\Lens::pause();

Returns immediately if Lens is disabled or the app is not running, so it never hangs your app.

Artisan commands

php artisan lens:test           # send a test payload to the Lens app
php artisan lens:check          # scan for leftover lens() calls
php artisan lens:check --staged # only staged files (for pre-commit)
php artisan lens:install-hooks  # install a git pre-commit hook

Prevent commits with lens()

lens:check scans for leftover lens() calls and returns exit code 1 when it finds any (useful in CI). A git pre-commit hook then automatically blocks any commit containing a lens() call.

Automatic (recommended)

The package installs the pre-commit hook by itself on composer install/update, but Composer requires your one-time consent for this. Add this to your project's composer.json:

"config": {
  "allow-plugins": {
    "lensapp-eu/lens-php": true
  }
}

The hook is only installed:

  • in dev (never on composer install --no-dev / production / CI deploy);
  • in a Laravel project (an artisan file must be present);
  • when there is a .git directory and no pre-commit hook exists yet (an existing hook is never overwritten).

Manual

php artisan lens:install-hooks

If a pre-commit hook already exists, use --force or add this line yourself:

php artisan lens:check --staged || exit 1

Configuration

Laravel

Optionally publish the config file:

php artisan vendor:publish --tag=lens-config

Or configure everything through your .env:

LENS_ENABLED=true
LENS_HOST=127.0.0.1
LENS_PORT=23600

Disable in production

Simply set:

LENS_ENABLED=false

All lens() calls then become no-ops, no network traffic, no overhead touching your app.

Without Laravel (plain PHP)

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

use LensApp\Lens\Lens;

Lens::configure('127.0.0.1', 23600); // optional; these are the defaults
lens('works without a framework too');

How it works

lens() builds a JSON payload and makes a short HTTP POST to the Lens desktop app (http://LENS_HOST:LENS_PORT). If that fails (app not open, timeout) the error is silently ignored, debugging should never break your application.

License

MIT, see LICENSE.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-25

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固