Initial commit: apps.prometeysev.ru

This commit is contained in:
root committed 2026-10-22 00:22:57 +03:00
commit 96ccabcd8b
6561 files changed
+1270349

No files matched your search

View File
Whitespace-only changes.
+52
View File
@@ -0,0 +1,52 @@
# Global configuration information used across all the
# translations of documentation.
#
# Import the base theme configuration
from cakephpsphinx.config.all import *
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The full version, including alpha/beta/rc tags.
release = '3.x'
# The search index version.
search_version = 'debugkit-3'
# The marketing display name for the book.
version_name = ''
# Project name shown in the black header bar
project = 'CakePHP DebugKit'
# Other versions that display in the version picker menu.
version_list = [
{'name': '3.x', 'number': '/debugkit/3', 'title': '3.x', 'current': True},
{'name': '4.x', 'number': '/debugkit/4', 'title': '4.x'},
]
# Languages available.
languages = ['en', 'fr', 'ja', 'pt']
# The GitHub branch name for this version of the docs
# for edit links to point at.
branch = '3.x'
# Current version being built
version = '3.x'
# Language in use for this directory.
language = 'en'
show_root_link = True
repository = 'cakephp/debug_kit'
source_path = 'docs/'
hide_page_contents = ('search', '404', 'contents')
# DebugKit docs use mp4 videos to show the UI
extensions.append('sphinxcontrib.video')
+9
View File
@@ -0,0 +1,9 @@
import sys, os
# Append the top level directory of the docs, so we can import from the config dir.
sys.path.insert(0, os.path.abspath('..'))
# Pull in all the configuration options defined in the global config file..
from config.all import *
language = 'en'
+5
View File
@@ -0,0 +1,5 @@
.. toctree::
:maxdepth: 2
:caption: CakePHP DebugKit
/index
+286
View File
@@ -0,0 +1,286 @@
Debug Kit
#########
DebugKit provides a debugging toolbar and enhanced debugging tools for CakePHP
applications. It lets you quickly see configuration data, log messages, SQL
queries, and timing data for your application.
.. warning::
DebugKit is only intended for use in single-user local development
environments. You should avoid using DebugKit in shared development
environments, staging environments, or any environment where you need to
keep configuration data and environment variables hidden.
Installation
============
By default DebugKit is installed with the default application skeleton. If
you've removed it and want to re-install it, you can do so by running the
following from your application's ROOT directory (where composer.json file is
located)::
php composer.phar require --dev cakephp/debug_kit "~3.0"
Then, you need to enable the plugin by executing the following line::
bin/cake plugin load DebugKit
Configuration
=============
* ``DebugKit.panels`` - Enable or disable panels for DebugKit. You can disable any of the
standard panels by::
// Before loading DebugKit
Configure::write('DebugKit.panels', ['DebugKit.Packages' => false]);
* ``DebugKit.includeSchemaReflection`` - Set to true to enable logging of schema
reflection queries. Disabled by default.
* ``DebugKit.safeTld`` - Set an array of whitelisted TLDs for local development.
This can be used to make sure DebugKit displays on hosts it otherwise determines unsafe. ::
// Allow e.g. http://foo.bar.dev or http://my-shop.local domains locally
Configure::write('DebugKit.safeTld', ['dev', 'local', 'example']);
* ``DebugKit.forceEnable`` - Force DebugKit to display. Careful with this, it is usually
safer to simply whitelist your local TLDs. Example usage::
// Before loading DebugKit
Configure::write('DebugKit.forceEnable', true);
* ``DebugKit.ignoreAuthorization`` - Set to true to ignore Cake Authorization plugin for DebugKit requests. Disabled by default.
Database Configuration
----------------------
By default DebugKit will store panel data into a SQLite database in your
application's ``tmp`` directory. If you cannot install pdo_sqlite, you can
configure DebugKit to use a different database by defining a ``debug_kit``
connection in your **config/app.php** file. For example::
/**
* The debug_kit connection stores DebugKit meta-data.
*/
'debug_kit' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
//'port' => 'nonstandard_port_number',
'username' => 'dbusername', // Your DB username here
'password' => 'dbpassword', // Your DB password here
'database' => 'debug_kit',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
],
You can safely remove the **tmp/debug_kit.sqlite** file at any point.
DebugKit will regenerate it when necessary.
Toolbar Usage
=============
The DebugKit Toolbar is comprised of several panels, which are shown by clicking
the CakePHP icon in the bottom right-hand corner of your browser after DebugKit
has been installed and loaded. Each panel is comprised of a panel class and view
element. Typically, a panel handles the collection and display of a single type
of information such as Logs or Request information. You can choose to view panels
from the toolbar or add your own custom panels.
Each panel lets you look at a different aspect of your application:
* **Cache** See cache usage during a request and clear caches.
* **Environment** Display environment variables related to PHP + CakePHP.
* **History** Displays a list of previous requests, and allows you to load
and view toolbar data from previous requests.
* **Include** View the included files grouped by type.
* **Log** Display any entries made to the log files this request.
* **Packages** Display the list of packages dependencies with their actual
version and allow you to check for outdated packages.
* **Mail** Display all emails sent during the request and allow to preview
emails during development without sending them.
* **Request** Displays information about the current request, GET, POST, Cake
Parameters, Current Route information and Cookies.
* **Session** Display the information currently in the Session.
* **Sql Logs** Displays SQL logs for each database connection.
* **Timer** Display any timers that were set during the request with
``DebugKit\DebugTimer``, and memory usage collected with
``DebugKit\DebugMemory``.
* **Variables** Display View variables set in controller.
* **Deprecations** Display deprecation warnings in a more readable and less
disruptive format.
Using the History Panel
=======================
The history panel is one of the most frequently misunderstood features of
DebugKit. It provides a way to view toolbar data from previous requests,
including errors and redirects.
.. figure:: ../_static/history-panel.png
:alt: Screenshot of the history panel in debug kit.
As you can see, the panel contains a list of requests. On the left you can see
a dot marking the active request. Clicking any request data will load the panel
data for that request. When historical data is loaded the panel titles will
transition to indicate that alternative data has been loaded.
.. only:: html or epub
.. video:: ../_static/history-panel-use.mp4
:alt: Video of history panel in action.
Using The Mail Panel
====================
The mail panel allow you to track all emails sent during a request.
.. only:: html or epub
.. video:: ../_static/mail-panel.mp4
:alt: Video of Mail panel in action.
The mailer preview allows you to easily check emails during development.
.. only:: html or epub
.. video:: ../_static/mail-previewer.mp4
:alt: Video of Mail panel in action.
Creating Preview Classes
------------------------
In order to preview emails before sending them, you need to create a preview
class that defines the receipient and required template variables for your
mailer methods::
// in src/Mailer/MailPreview/WelcomePreview.php
namespace App\Mailer\Preview;
use DebugKit\Mailer\MailPreview;
class WelcomePreview extends MailPreview
{
public function welcome()
{
$mailer = $this->getMailer('Welcome');
// set any template variables receipients for the mailer.
return $mailer;
}
}
MailPreview classes should live in the ``Mailer\Preview`` namespace of your
application or plugin, and use the ``Preview`` class suffix.
Developing Your Own Panels
==========================
You can create your own custom panels for DebugKit to help in debugging your
applications.
Creating a Panel Class
----------------------
Panel Classes simply need to be placed in the **src/Panel** directory. The
filename should match the classname, so the class ``MyCustomPanel`` would be
expected to have a filename of **src/Panel/MyCustomPanel.php**::
namespace App\Panel;
use DebugKit\DebugPanel;
/**
* My Custom Panel
*/
class MyCustomPanel extends DebugPanel
{
...
}
Notice that custom panels are required to extend the ``DebugPanel`` class.
Callbacks
---------
By default Panel objects have two callbacks, allowing them to hook into the
current request. Panels subscribe to the ``Controller.initialize`` and
``Controller.shutdown`` events. If your panel needs to subscribe to additional
events, you can use the ``implementedEvents()`` method to define all of the events
your panel is interested in.
You should refer to the built-in panels for some examples on how you can build
panels.
Panel Elements
--------------
Each Panel is expected to have a view element that renders the content from the
panel. The element name must be the underscored inflection of the class name.
For example ``SessionPanel`` has an element named **session_panel.ctp**, and
SqllogPanel has an element named **sqllog_panel.ctp**. These elements should be
located in the root of your **src/Template/Element** directory.
Custom Titles and Elements
--------------------------
Panels should pick up their title and element name by convention. However, if
you need to choose a custom element name or title, you can define methods to
customize your panel's behavior:
- ``title()`` - Configure the title that is displayed in the toolbar.
- ``elementName()`` - Configure which element should be used for a given panel.
Panel Hook Methods
------------------
You can also implement the following hook methods to customize how your panel
behaves and appears:
* ``shutdown(Event $event)`` This method typically collects and prepares the
data for the panel. Data is generally stored in ``$this->_data``.
* ``summary()`` Can return a string of summary data to be displayed in the
toolbar even when a panel is collapsed. Often this is a counter, or short
summary information.
* ``data()`` Returns the panel's data to be used as element context. This hook
method lets you further manipulate the data collected in the ``shutdown()``
method. This method **must** return data that can be serialized.
Panels in Other Plugins
-----------------------
Panels provided by `plugins <https://book.cakephp.org/3.0/en/plugins.html>`_ work
almost entirely the same as other plugins, with one minor difference: You must
set ``public $plugin`` to be the name of the plugin directory, so that the
panel's Elements can be located at render time::
namespace MyPlugin\Panel;
use DebugKit\DebugPanel;
class MyCustomPanel extends DebugPanel
{
public $plugin = 'MyPlugin';
...
}
To use a plugin or app panel, update your application's DebugKit configuration
to include the panel::
// in src/Application.php bootstrap() method add
Configure::write('DebugKit.panels', ['App', 'MyPlugin.MyCustom']);
$this->addPlugin('DebugKit', ['bootstrap' => true]);
The above would load all the default panels as well as the ``AppPanel``, and
``MyCustomPanel`` panel from ``MyPlugin``.
Helper Functions
================
* ``sql()`` Dumps out the SQL from an ORM query.
* ``sqld()`` Dumps out the SQL from an ORM query, and exits.
+9
View File
@@ -0,0 +1,9 @@
import sys, os
# Append the top level directory of the docs, so we can import from the config dir.
sys.path.insert(0, os.path.abspath('..'))
# Pull in all the configuration options defined in the global config file..
from config.all import *
language = 'fr'
+5
View File
@@ -0,0 +1,5 @@
.. toctree::
:maxdepth: 2
:caption: CakePHP DebugKit
/index
+239
View File
@@ -0,0 +1,239 @@
Debug Kit
#########
DebugKit est un plugin supporté par la core team qui fournit une toolbar pour
vous aider à debugger les applications CakePHP plus facilement.
DebugKit fournit une barre d'outils de débuggage et des outils de débuggage
améliorés pour les applications CakePHP. Il vous permet de voir rapidement les
données de configuration, les messages de logs, les requêtes SQL et des données
de temps d'exécution pour votre application.
.. warning::
DebugKit est uniquement destiné à être utilisé dans des environnements de
développement local à un seul utilisateur. Vous devez éviter d'utiliser
DebugKit dans les environnements de développement partagés, les
environnements de stagging où vous devez garder les données de configuration
et les variables d'environnement cachées.
Installation
============
Par défaut DebugKit est installé avec le squelette d'application. Si vous
le retirez et voulez le réinstaller, vous pouvez le faire en lançant ce qui
suit à partir du répertoire ROOT de votre application (où le fichier
composer.json est localisé)::
php composer.phar require --dev cakephp/debug_kit "~3.0"
Ensuite, vous devez activer le plugin en exécutant la ligne suivante::
bin/cake plugin load DebugKit
Configuration
=============
* ``DebugKit.ignoreAuthorization`` - Définie à true pour ignorer le plugin Cake Authorization uniquement pour les requêtes DebugKit. Par défaut à false.
Stockage de DebugKit
====================
Par défaut, DebugKit utilise une petite base de données SQLite dans le
répertoire ``/tmp`` de votre application pour stocker les données du panneau.
Si vous voulez que DebugKit stocke ses données ailleurs, vous pouvez définir
une connexion ``debug_kit``.
Configuration de Base de Données
--------------------------------
Par défaut DebugKit va stocker les données du panneau dans une base de données
SQLite dans le répertoire ``tmp`` de votre application. Si vous ne pouvez pas
installer pdo_sqlite, vous pouvez configurer DebugKit pour utiliser une base
de données différente en définissant une connexion ``debug_kit`` dans votre
fichier **config/app.php**.
Utilisation de la Toolbar
=========================
La Toolbar de DebugKit comprend plusieurs panneaux, qui apparaissent en
cliquant sur l'icone CakePHP dans le coin en bas à droite de la fenêtre de
votre navigateur. Une fois que la toolbar est ouverte, vous devriez voir une
série de boutons. Chacun de ces boutons s'agrandit en un panneau avec des
informations liées.
Chaque panneau vous permet d'inspecter plusieurs aspects de votre application:
* **Cache** Voir l'utilisation du cache pendant une requête et nettoyer les
caches.
* **Environment** Affiche les variables d'environnement liées à PHP + CakePHP.
* **History** Affiche une liste des requêtes précédentes, et vous permet de
charger et de voir les données de la toolbar des requêtes précédentes.
* **Include** Voir les fichiers inclus groupés par type.
* **Log** Affiche toute entrée faite dans les fichiers de log par cette requête.
* **Packages** Affiche la liste des dépendances avec leur version courante et
vous permet de vérifier les packages qui ne sont pas à jour.
* **Mail** Affiche tous les emails envoyés pendant la requête et permet de
prévisualiser les emails pendant le développement sans les envoyer.
* **Request** Affiche les informations sur la requête courante, GET, POST, les
paramètre de Cake, sur la Route Courante et les Cookies.
* **Session** Affiche les informations actuellement dans la Session.
* **Sql Logs** Affiche les logs SQL pour chaque connexion à la base de données.
* **Timer** Affiche tout timers qui a été défini pendant la requête avec
``DebugKit\DebugTimer``, et l'utilisation de la mémoire collectée avec
``DebugKit\DebugMemory``.
* **Variables** Affiche les variables de View définies dans le controller.
Typiquement, un panneau gère la collection et affiche un type unique
d'information comme les Logs ou les informations de la Requête. Vous pouvez
choisir de voir les panneaux de la toolbar ou ajouter vos panneaux
personnalisés.
Utiliser le Panneau d'Historique
================================
Le panneau d'historique est l'une des fonctionnalités les plus souvent mal
comprise de DebugKit. Elle est un moyen de voir les données de la toolbar des
requêtes précédentes, d'inclure les erreurs et les redirects.
.. figure:: ../_static/history-panel.png
:alt: Capture d'écran du panneau historique dans debug kit.
Comme vous pouvez le voir, le panneau contient une liste des requêtes. Sur la
gauche, vous pouvez voir un point marquant la requête actuelle. Cliquer
sur n'importe quelles données de requête va charger les données du panneau
pour cette requête. Quand les données historiques sont chargées, les titres
du panneau seront colorés pour indiquer que des données alternatives ont été
chargées.
.. only:: html or epub
.. video:: ../_static/history-panel-use.mp4
:alt: Video du panneau historique en action.
Utiliser le Panneau Mail
========================
Le panneau de mail vous permet de pister tous les emails envoyés pendant une
requête.
.. only:: html or epub
.. video:: ../_static//mail-panel.mp4
:alt: Video du panneau Mail en action.
La prévisualisation de mail vous permet de facilement vérifier les emails
pendant le développement.
.. only:: html or epub
.. video:: ../_static/img/mail-previewer.gif
:alt: Video du panneau Mail en action.
Développer vos Propres Panneaux
===============================
Vous pouvez créer vos propres panneaux personnalisés pour DebugKit pour
améliorer le debug de vos applications.
Créer une Classe Panel
----------------------
Les Classes Panel doivent simplement être placées dans le répertoire
**src/Panel**. Le nom de fichier doit correspondre au nom de la classe, pour
que la classe ``MyCustomPanel`` s'attende à avoir un fichier au nom
**src/Panel/MyCustomPanel.php**::
namespace App\Panel;
use DebugKit\DebugPanel;
/**
* Mon panneau Personnalisé
*/
class MyCustomPanel extends DebugPanel
{
...
}
Remarquez que les panneaux personnalisés doivent étendre la classe
``DebugPanel``.
Callbacks
---------
Par défaut, les objets Panel ont deux callbacks, leur permettant de s'insérer
dans la requête actuelle. Les panneaux s'inscrivent aux events
``Controller.initialize`` et ``Controller.shutdown``. Si votre panneau doit
s'inscrire à des events supplémentaires, vous pouvez utiliser la méthode
``implementedEvents()`` pour définir tous les events auxquels votre panneau
doit s'intéresser.
Vous devez vous référer aux panneaux intégrés pour avoir quelques exemples sur
la façon de construire des panneaux.
Elements de Panneau
-------------------
Chaque panneau s'attend à avoir un element de view qui rend le contenu du
panneau. Le nom de l'element doit être avec une inflection en underscore du
nom de la classe.
Par exemple ``SessionPanel`` a un element nommé **session_panel.ctp**, et
SqllogPanel a un element nommé **sqllog_panel.ctp**. Ces elements doivent être
localisés à la racine de votre répertoire **src/Template/Element**.
Titres Personnalisés et Elements
--------------------------------
Les panneaux doivent choisir leur titre et leur nom d'element par convention.
Cependant, si vous avez besoin de choisir un nom ou un titre d'element
personnalisé, vous pouvez définir des méthodes pour personnaliser le
comportement de votre panneau:
- ``title()`` - Configure le titre qui est affiché dans la toolbar.
- ``elementName()`` Configure l'element qui doit être utilisé pour un panneau
donné.
Méthodes de Hook pour Panneaux
------------------------------
Vous pouvez également implémenter les méthodes suivantes pour personnaliser
la manière dont votre panneau se comporte et s'affiche:
* ``shutdown(Event $event)`` Cette méthode collecte et prépare les données pour
panneau. Les données sont généralement stockées dans ``$this->_data``.
* ``summary()`` Peut retourner une chaine de caractères contenu un résumé de
données qui sera affiché dans la barre lorsque le panneau est replié. C'est
souvent un compteur ou un court résumé.
* ``data()`` Retourne les données du panneau pour être utilisées dans un
element. Cette méthode vous laisse manipuler les données collectées dans
la méthode ``shutdown()``. cette méthode **doit** retourner des données
sérializables.
Panneaux dans d'autres Plugins
------------------------------
Les panneaux fournis par les `plugins
<https://book.cakephp.org/3.0/fr/plugins.html>`_ fonctionnent presque entièrement de
la même façon que les autres plugins, avec quelques différences mineures: Vous
devez définir ``public $plugin`` comme nom de répertoire de plugin, pour
que les elements du panneau puissent être localisés au moment de les afficher::
namespace MyPlugin\Panel;
use DebugKit\DebugPanel;
class MyCustomPanel extends DebugPanel
{
public $plugin = 'MyPlugin';
...
}
Pour utiliser un panneau de plugin ou de l'application, mettez à jour
la configuration du DebugKit de votre application pour ajouter le panneau::
// dans config/bootstrap.php
Configure::write('DebugKit.panels', ['App', 'MyPlugin.MyCustom']);
Plugin::load('DebugKit', ['bootstrap' => true]);
Ce qui est au-dessus charge tous les panneaux par défaut ainsi que le panneau
``AppPanel``et le panneau ``MyCustomPanel`` depuis ``MyPlugin``.
+9
View File
@@ -0,0 +1,9 @@
import sys, os
# Append the top level directory of the docs, so we can import from the config dir.
sys.path.insert(0, os.path.abspath('..'))
# Pull in all the configuration options defined in the global config file..
from config.all import *
language = 'ja'
+5
View File
@@ -0,0 +1,5 @@
.. toctree::
:maxdepth: 2
:caption: CakePHP DebugKit
/index
+267
View File
@@ -0,0 +1,267 @@
Debug Kit
#########
DebugKit は、CakePHP アプリケーション用のデバッグツールバーと拡張デバッグツールを提供します。
アプリケーションの設定データ、ログメッセージ、SQL クエリー、およびタイミングデータをすばやく
確認できます。
.. warning::
DebugKit は、シングルユーザーのローカル開発環境での使用を目的としています。
共有開発環境、ステージング環境、または設定データと環境変数を隠しておく必要がある環境では、
DebugKit を使用しないでください。
インストール
============
デフォルトで、DebugKit はデフォルトのアプリケーションスケルトンにインストールされています。
もし削除してしまって再インストールしたい場合は、以下のコマンドをアプリケーションの
ルートディレクトリー (composer.json ファイルのある場所) で実行してください。 ::
php composer.phar require --dev cakephp/debug_kit "~3.0"
そして以下のコマンドでプラグインを有効化する必要があります。 ::
bin/cake plugin load DebugKit
設定
====
* ``DebugKit.panels`` - DebugKit のパネルを有効化または無効化します。
次のようにして、任意の標準パネルを無効にすることができます。 ::
// DebugKit をロードする前に
Configure::write('DebugKit.panels', ['DebugKit.Packages' => false]);
* ``DebugKit.includeSchemaReflection`` - スキーマリフレクションクエリーの
ロギングを有効にするには、true に設定します。デフォルトは無効になっています。
* ``DebugKit.safeTld`` - ローカル開発用のトップレベルドメインのホワイトリストを設定します。
これにより安全でないと判断したホスト上で DebugKit を表示できるようになります。 ::
// 例: http://foo.bar.dev または http://my-shop.local のドメインはローカルとして許可する
Configure::write('DebugKit.safeTld', ['dev', 'local', 'example']);
* ``DebugKit.forceEnable`` - DebugKit を強制的に表示します。これを使うときは注意してください。
通常は単純にローカルのトップレベルドメインをホワイトリストに追加したほうが安全です。 使用例::
// DebugKit をロードする前に
Configure::write('DebugKit.forceEnable', true);
データベース設定
----------------
デフォルトでは DebugKit はアプリケーションの ``/tmp`` 内の SQLite データベースに
パネルデータを保持します。もし pdo_sqlite をインストールできない場合は、
**config/app.php** ファイル に ``debug_kit`` コネクションを定義すると
DebugKit が異なるデータベースを使用するように設定できます。例::
/**
* debug_kit コネクションは DebugKit のメタデータを格納します。
*/
'debug_kit' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
//'port' => 'nonstandard_port_number',
'username' => 'dbusername', // Your DB username here
'password' => 'dbpassword', // Your DB password here
'database' => 'debug_kit',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
],
**tmp/debug_kit.sqlite** ファイルは、いつでも削除することができます。
DebugKit は、必要に応じて、それを再生成します。
ツールバーの使い方
==================
DebugKit ツールバーは、いくつかのパネルで構成されています。これらのパネルは、
DebugKit をインストールしてロードした後、ブラウザーの右下隅にある CakePHP
アイコンをクリックすると表示されます。各パネルは、パネルクラスとビューエレメントで構成されています。
一般的に、パネルは単一の種類の情報のコレクションの処理やログやリクエスト情報の表示を行います。
ツールバーからパネルを表示したり、独自のカスタムパネルを追加することを選択できます。
各パネルはアプリケーションの様々な側面を見せてくれます。
* **Cache** リクエスト中のキャッシュの使用状況の確認とキャッシュのクリアー。
* **Environment** PHP 及び CakePHP に関連する環境変数の表示。
* **History** 以前のリクエストの一覧の表示と、以前のリクエストのツールバーデータの読み込みと表示。
* **Include** タイプごとにグループ化されたインクルードファイルを表示。
* **Log** このリクエスト中にログファイルに加えられたすべてのエントリーを表示。
* **Packages** 現在のバージョンのパッケージの依存関係の一覧を表示し、
古いパッケージをチェックすることができます。
* **Mail** このリクエスト中の全てのメール送信を表示し、
送信せずに開発中のメールのプレビューができます。
* **Request** 現在のリクエスト、GET、POST、Cake パラメーター、現在のルート情報、クッキー情報の表示。
* **Session** 現在のセッション情報の表示。
* **Sql Logs** 各データベースコネクションの SQL ログの表示。
* **Timer** リクエスト中に ``DebugKit\DebugTimer`` で設定されたすべてのタイマーと、
``DebugKit\DebugMemory`` で収集されたメモリー使用状況の表示。
* **Variables** コントローラーでセットされたビュー変数の表示。
履歴パネルを使用する
====================
履歴パネルは DebugKit で最も勘違いされやすい機能の一つです。
エラーやリダイレクトを含む以前のリクエストのツールバーのデータを表示することができます。
.. figure:: ../_static/history-panel.png
:alt: Screenshot of the history panel in debug kit.
ご覧のようにパネルにはリクエストの一覧が含まれます。左側にドットがついているのがアクティブな
リクエストです。どれかのリクエストをクリックするとそのリクエストのデータが読み込まれます。
履歴データがロードされると代替のデータが読み込まれたことを示すようにパネルのタイトルが遷移します。
.. only:: html or epub
.. video:: ../_static/history-panel-use.mp4
:alt: Video of history panel in action.
メールパネルを使用
==================
メールパネルは、リクエストの間に送信された全てのメールを追跡することができます。
.. only:: html or epub
.. video:: ../_static/mail-panel.mp4
:alt: Video of mail panel in action
メーラープレビューは、開発中のメールを簡単にプレビューすることができます。
.. only:: html or epub
.. video:: ../_static/mail-previewer.mp4
:alt: Video of mail panel in action
プレビュークラスの作成
------------------------
メールを送信する前にプレビューするには、受信者と mailer メソッドに必要なテンプレート変数を
定義するプレビュークラスを作成する必要があります。 ::
// src/Mailer/MailPreview/WelcomePreview.php の中で
namespace App\Mailer\Preview;
use DebugKit\Mailer\MailPreview;
class WelcomePreview extends MailPreview
{
public function welcome()
{
$mailer = $this->getMailer('Welcome');
// メーラーのテンプレート変数受信者を設定します。
return $mailer;
}
}
MailPreview クラスは、 アプリケーションまたはプラグインの ``Mailer\Preview``
名前空間に存在し、 ``Preview`` を使用する必要があります。
独自のパネルを開発する
======================
アプリケーションのデバッグを補助するための DebugKit の独自のカスタムパネルを
作成することができます。
パネルクラスを作成する
----------------------
パネルクラスは単に **src/Panel** ディレクトリーに設置してください。ファイル名はクラス名と
一致する必要があります。 つまり ``MyCustomPanel`` クラスは
**src/Panel/MyCustomPanel.php** というファイル名であることを想定しています。 ::
namespace App\Panel;
use DebugKit\DebugPanel;
/**
* My Custom Panel
*/
class MyCustomPanel extends DebugPanel
{
...
}
カスタムパネルは ``DebugPanel`` クラスを拡張する必要があることに注意してください。
コールバック
------------
デフォルトではパネルオブジェクトには、現在のリクエストをフックすることができる
2つのコールバックがあります。パネルは ``Controller.initialize`` と
``Controller.shutdown`` のイベントを取得します。もしパネルが追加のイベントを
取得したい場合は、 ``implementedEvents()`` メソッドを使用し、
パネルが必要とするすべてのイベントを定義できます。
どのようにパネルを構築するかについてのいくつかの例として、ビルトインのパネルを参照してください。
パネルの構成要素
----------------
各パネルはパネルのコンテンツを描画するためのビューエレメントがあることを想定しています。
エレメント名はアンダースコアー区切りのクラス名である必要があります。
たとえば、 ``SessionPanel`` は **session_panel.ctp** という名前のエレメントを持ちます。
また、SqllogPanelは **sqllog_panel.ctp** という名前のエレメントを持ちます。
これらのエレメントは **src/Template/Element** ディレクトリーのルートに設置する必要があります。
カスタムのタイトルとエレメント
------------------------------
パネルは慣例を元にそのタイトルとエレメント名を補足します。もしカスタムのタイトルやエレメント名を
付けたい場合は、パネルの振る舞いをカスタムするメソッドを定義することができます。
- ``title()`` - ツールバー上に表示されるタイトルを設定します
- ``elementName()`` - 与えられたパネルがどのエレメントを使用するかを設定します
パネルフックメソッド
--------------------
また、パネルの動作や表示方法をカスタムするために以下のフックメソッドを実装することができます。
* ``shutdown(Event $event)`` このメソッドは通常はパネルのデータの収集と準備を行います。
* ``summary()`` パネルが折りたたまれている時に表示されるサマリーデータの文字列を
返すことができます。多くの場合、これは件数や短いサマリー情報です。
* ``data()`` エレメントのコンテキストで使用されるパネルのデータを返します。
このフックメソッドは ``shutdown()`` で収集されるデータを更に操作することができます。
このメソッドはシリアライズ化可能なデータを **必ず** 返す必要があります。
他のプラグインのパネル
----------------------
パネルはひとつの小さな違いを除き、`plugins <https://book.cakephp.org/3.0/ja/plugins.html>`_
とほぼ同じ動作を提供します。レンダリング時にパネルのエレメントを配置できるように、
``public $plugin`` にプラグインディレクトリーの名前を必ずセットする必要があります。 ::
namespace MyPlugin\Panel;
use DebugKit\DebugPanel;
class MyCustomPanel extends DebugPanel
{
public $plugin = 'MyPlugin';
...
}
プラグインやアプリケーションパネルを使用するには、アプリケーションの DebugKit の設定を
更新します。 ::
// src/Application.php の bootstrap() メソッドの中に追加
Configure::write('DebugKit.panels', ['App', 'MyPlugin.MyCustom']);
$this->addPlugin('DebugKit', ['bootstrap' => true]);
上記は、すべてのデフォルトのパネルと同じように ``AppPanel`` と ``MyPlugin`` の
``MyCustomPanel`` パネルを読みこみます。
ヘルパー関数
================
* ``sql()`` ORM クエリーから SQL をダンプします。
* ``sqld()`` ORM クエリーから SQL をダンプして終了します。
+9
View File
@@ -0,0 +1,9 @@
import sys, os
# Append the top level directory of the docs, so we can import from the config dir.
sys.path.insert(0, os.path.abspath('..'))
# Pull in all the configuration options defined in the global config file..
from config.all import *
language = 'pt'
+5
View File
@@ -0,0 +1,5 @@
.. toctree::
:maxdepth: 2
:caption: CakePHP DebugKit
/index
+216
View File
@@ -0,0 +1,216 @@
Debug Kit
#########
DebugKit é um plugin suportado pelo time principal do CakePHP que oferece uma
barra de ferramentas para auxiliar na depuração de aplicações do CakePHP.
Instalação
==========
Por padrão o DebugKit é instalado com o esqueleto padrão da aplicação. Se
você o removeu e gostaria de reinstalá-lo, você pode executar o seguinte comando
a partir do diretório raiz da aplicação
(onde o arquivo composer.json está localizado)::
php composer.phar require --dev cakephp/debug_kit "~3.0"
Então, você precisará habilitar o plugin ao executar o seguinte comando::
bin/cake plugin load DebugKit
Armazenamento do DebugKit
=========================
Por padrão, o DebugKit usa um pequeno banco de dados SQLite no diretório
``/tmp`` de sua aplicação para armazenar os dados referentes ao painel
de informações. Se você quiser que o DebugKit armazene seus dados em outro
lugar, é necessário configurar uma nova conexão com o nome ``debug_kit`` .
Configuração do banco de dados
------------------------------
Como informado anteriormente, por padrão, o DebugKit armazenará os dados do
painel em um banco de dados SQLite no diretório ``/tmp`` de sua aplicação. Se
você não puder instalar a extensão pdo_sqlite do PHP, você pode configurar o
DebugKit para usar um banco de dados diferente ao definir uma conexão
``debug_kit`` em seu arquivo **config/app.php**. Por exemplo::
/**
* A conexão debug_kit armazena meta-dados do DebugKit.
*/
'debug_kit' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
//'port' => 'nonstandard_port_number',
'username' => 'dbusername', // Your DB username here
'password' => 'dbpassword', // Your DB password here
'database' => 'debug_kit',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
],
Uso da barra de ferramentas
===========================
A barra de ferramentas do DebugKit é composta por vários painéis, que são
exibidos ao clicar no ícone do CakePHP no canto inferior direito da janela do
seu navegador. Uma vez que a barra de ferramentas é aberta, você deverá ver uma
série de botões. Cada um desses botões se expande em um painel de informações
relacionadas.
Cada painel permite a você observar aspectos diferentes da sua aplicação:
* **Cache** Exibe o uso de cache durante uma solicitação e limpa caches.
* **Environment** Exibe variáveis de ambiente relacionadas com PHP + CakePHP.
* **History** Exibe uma lista de requisições anteriores, e permite que você
carregue e veja dados da barra de ferramentas a partir de solicitações
anteriores.
* **Include** Exibe os arquivos inclusos divididos por grupo.
* **Log** Exibe todas as entradas feitas nos arquivos de log este pedido.
* **Request** Exibe informações sobre a requisição atual, GET, POST, informações
sobre a rota atual do Cake e Cookies.
* **Session** Exibe a informação atual da sessão.
* **Sql Logs** Exibe logs SQL para cada conexão com o banco de dados.
* **Timer** Exibe qualquer temporizador que fora definido durante a requisição
com ``DebugKit\DebugTimer``, e memória utilizada coletada com
``DebugKit\DebugMemory``.
* **Variables** Exibe variáveis de View definidas em um Controller.
Tipicamente, um painel manipula a recolha e apresentação de um único tipo
de informações como logs ou informações de requisições. Você pode optar por
visualizar os painéis padrões da barra de ferramentas ou adicionar seus próprios
painéis personalizados.
Usando o painel History
=======================
O painel History é uma das características mais frequentemente confundidas do
DebugKit. Ele oferece uma forma de visualizar os dados de requisições
anteriores na barra de ferramentas, incluindo erros e redirecionamentos.
.. figure:: /_static/img/history-panel.png
:alt: Screenshot do painel History no DebugKit.
Como você pode ver, o painel contém uma lista de requisições. Na esquerda você
pode ver um ponto marcando a requisição ativa. Clicar em qualquer requisição vai
carregar os dados referentes a mesma no painel. Quando os dados são carregados,
os títulos do painel vão sofrer uma transição para indicar que informações
alternativos foram carregados.
.. only:: html or epub
.. figure:: /_static/img/history-panel-use.gif
:alt: Video do painel History em ação.
Desenvolvendo seus próprios painéis
===================================
Você pode criar seus próprios painéis customizados do DebugKit para ajudar
na depuração de suas aplicações.
Criando uma Panel Class
-----------------------
Panel Classes precisam ser colocadas no diretório **src/Panel**. O
nome do arquivo deve combinar com o nome da classe, então a classe
``MyCustomPanel`` deveria remeter ao nome de arquivo
**src/Panel/MyCustomPanel.php**::
namespace App\Panel;
use DebugKit\DebugPanel;
/**
* My Custom Panel
*/
class MyCustomPanel extends DebugPanel
{
...
}
Perceba que painéis customizados são necessários para extender a classe
``DebugPanel``.
Callbacks
---------
Por padrão objetos do painel possuem dois callbacks, permitindo-lhes acoplar-se
na requisição atual. Painéis inscrevem-se aos eventos ``Controller.initialize``
e ``Controller.shutdown``. Se o seu painel precisa inscrever-se a eventos
adicionais, você pode usar o método ``implementedEvents`` para definir todos os
eventos aos quais o seu painel possa precisar estar inscrito.
Você deveria estudar os painéis nativos para absorver alguns exemplos de como
construir painéis.
Elementos do painel
-------------------
Cada painel deve ter um elemento view que renderiza o conteúdo do mesmo.
O nome do elemento deve ser sublinhado e flexionado a partir do nome da classe.
Por exemplo ``SessionPanel`` deve possuir um elemento nomeado
**session_panel.ctp**, e SqllogPanel deve possuir um elemento nomeado
**sqllog_panel.ctp**. Estes elementos devem estar localizados na raiz do seu
diretório **src/Template/Element**.
Títulos personalizados e Elementos
----------------------------------
Os painéis devem relacionar o seu título e o nome do elemento por convenção. No
entanto, se você precisa escolher um nome de elemento personalizado ou título,
você pode definir métodos para customizar o comportamento do seu painel:
- ``title()`` - Configure o título que é exibido na barra de ferramentas.
- ``elementName()`` - Configure qual elemento deve ser utilizada para um
determinado painel.
Métodos de captura
------------------
Você também pode implementar os seguintes métodos para customizar como o seu
painel se comporta e se aparenta:
* ``shutdown(Event $event)`` Esse método coleta e prepara os dados para o
painel. Os dados são geralmente armazenados em ``$this->_data``.
* ``summary()`` Este método retorna uma *string* de dados resumidos para serem
exibidos na *toolbar*, mesmo quando um painel está minimizado. Frequentemente,
é um contador ou um pequeno resumo de informações.
* ``data()`` Este método retorna os dados do painel que serão usados como
contexto para o elemento. Você pode manipular os dados coletados no método
``shutdown()``. Esse método **deve** retornar dados que podem ser
serializados.
Painéis em outros plugins
-------------------------
Painéis disponibilizados por `plugins
<https://book.cakephp.org/3.0/pt/plugins.html>`_ funcionam quase que totalmente
como outros plugins, com uma pequena diferença: Você deve definir ``public
$plugin`` como o nome do diretório do plugin, com isso os elementos do painel
poderão ser encontrados no momento de renderização::
namespace MyPlugin\Panel;
use DebugKit\DebugPanel;
class MyCustomPanel extends DebugPanel
{
public $plugin = 'MyPlugin';
...
}
Para usar um plugin ou painel da aplicação, atualize a configuração do DebugKit
de sua aplicação para incluir o painel::
Configure::write(
'DebugKit.panels',
array_merge(Configure::read('DebugKit.panels'), ['MyCustomPanel'])
);
O código acima deve carregar todos os painéis padrão tanto como os outros
painéis customizados do ``MyPlugin``.