محرر Laravel Dotenv هو محرر ملفات .env (أو الملفات ذات الهيكل نفسه وبناء الجملة) لـ Laravel 5.8+. الآن يمكنك تحرير ملفات .env بسهولة بالميزات التالية:
محرر Laravel Dotenv متوافق مع Laravel 5.8 وبعد ذلك.
2.x بعد إصدار 1.2.1 ، سيتم إيقاف الإصدار 1.x لصالح إصدار جديد (الإصدار 2.x ) مع بعض التغييرات التي يجب أن تكون متوافقة مع طريقة تحليل vlucas/phpdotenv . لقد تغير الإصدار 2.x كثيرًا مقارنة بالإصدار السابق. إذا كنت قد استخدمت الإصدارات السابقة من هذه الحزمة ، فيرجى إعادة قراءة التعليمات بعناية.
انظر إلى أحد الموضوعات التالية لمعرفة المزيد حول محرر Laravel Dotenv:
يمكنك تثبيت هذه الحزمة من خلال الملحن. في جذر دليل التطبيق الخاص بك ، قم بتشغيل الأمر التالي (في أي عميل طرفي):
$ composer require jackiedo/dotenv-editorلبدء استخدام الحزمة ، يجب عليك نشر ملف التكوين بحيث يمكنك تكوين الحزمة حسب الحاجة. للقيام بذلك ، قم بتشغيل الأمر التالي (في أي عميل طرفي) في جذر التطبيق الخاص بك:
$ php artisan vendor:publish --provider= " JackiedoDotenvEditorDotenvEditorServiceProvider " --tag= " config " سيؤدي ذلك إلى إنشاء ملف config/dotenv-editor.php في تطبيقك يمكنك تعديله لتعيين التكوين الخاص بك. أيضًا ، تأكد من التحقق من التغييرات في ملف التكوين الأصلي في هذه الحزمة بين الإصدارات. حاليا هناك الإعدادات التالية:
يتيح إعداد autoBackup أن يتم نسخ ملفك الأصلي تلقائيًا قبل حفظه. قم بتعيينها على true .
يتم استخدام إعداد backupPath لتحديد مكان احتياطي ملفك. هذه القيمة هي مسار فرعي (مجلد فرعي) من المجلد الجذري لتطبيق المشروع.
يتم استخدام إعداد alwaysCreateBackupFolder لطلب إنشاء مجلد النسخ الاحتياطي دائمًا ، سواء تم تنفيذ النسخ الاحتياطي أم لا.
محرر Laravel Dotenv لديه واجهة تحمل اسم JackiedoDotenvEditorFacadesDotenvEditor . يمكنك أداء جميع العمليات من خلال هذه الواجهة.
مثال:
<?php namespace Your Namespace ;
// ...
use Jackiedo DotenvEditor Facades DotenvEditor ;
class YourClass
{
public function yourMethod ()
{
$ return = DotenvEditor:: doSomething ();
}
} تدعم هذه الحزمة أيضًا حقن التبعية. يمكنك بسهولة ضخ مثيل لفئة JackiedoDotenvEditorDotenvEditor في وحدة التحكم الخاصة بك أو فئات أخرى.
مثال:
<?php namespace App Http Controllers ;
// ...
use Jackiedo DotenvEditor DotenvEditor ;
class TestDotenvEditorController extends Controller
{
protected $ editor ;
public function __construct ( DotenvEditor $ editor )
{
$ this -> editor = $ editor ;
}
public function doSomething ()
{
$ return = $ this -> editor -> doSomething ();
}
} بشكل افتراضي ، سيقوم محرر Laravel Dotenv بتحميل ملف dotenv الذي يقرأه Laravel في مشروعك. هذا هو ، إذا كان لارافيل الخاص بك يستخدم ملف .env.local لتخزين قيم التكوين ، يقوم محرر Laravel Dotenv أيضًا بتحميل المحتوى من هذا الملف افتراضيًا.
ومع ذلك ، إذا كنت تريد تحديد الملفات التي ستعمل معها بشكل صريح ، فيجب عليك استخدام طريقة load() .
بناء الجملة:
/**
* Load file for working
*
* @param string|null $filePath The file path
* @param boolean $restoreIfNotFound Restore this file from other file if it's not found
* @param string|null $restorePath The file path you want to restore from
*
* @return DotenvEditor
*/
public function load( $ filePath = null , $ restoreIfNotFound = false , $ restorePath = null );مثال:
// Working with the dotenv file that Laravel is using
$ editor = DotenvEditor:: load ();
// Working with file .env.example in root folder of project
$ editor = DotenvEditor:: load ( base_path ( ' .env.example ' ));
// Working with file .env.backup in folder storage/dotenv-editor/backups/
$ editor = DotenvEditor:: load ( storage_path ( ' dotenv-editor/backups/.env.backup ' )); ملاحظة: تحتوي طريقة load() على ثلاث معلمات:
$filePath : الطريق إلى الملف الذي تريد العمل معه. اضبط null للعمل مع الملف .env في المجلد الجذر.$restoreIfNotFound : يسمح لاستعادة ملفك إذا لم يتم العثور عليه.$restorePath : المسار إلى الملف المستخدم لاستعادة. اضبط null لاستعادة من ملف نسخ احتياطي أقدم.بناء الجملة:
/**
* Get raw content of file
*
* @return string
*/
public function getContent ();مثال:
$ rawContent = DotenvEditor:: getContent ();بناء الجملة:
/**
* Get all entries from file
*
* @return array
*/
public function getEntries( bool $ withParsedData = false );مثال:
$ lines = DotenvEditor:: getEntries ( true );ملاحظة: هذا سيعود صفيف. يتكون كل عنصر في الصفيف من العناصر التالية:
$withParsedData على true ) ، بما في ذلك: نوع الإدخال (فارغ ، التعليق ، setter ...) ، اسم المفتاح ، قيمة setter ، تعليق Setter ... بناء الجملة:
/**
* Get all or exists given keys in file content
*
* @param array $keys
*
* @return array
*/
public function getKeys ( $ keys = []);مثال:
// Get all keys
$ keys = DotenvEditor:: getKeys ();
// Only get two given keys if exists
$ keys = DotenvEditor:: getKeys ([ ' APP_DEBUG ' , ' APP_URL ' ]);ملاحظة: هذا سيعود صفيف. يتكون كل عنصر في الصفيف من العناصر التالية:
بناء الجملة:
/**
* Return information of entry matching to a given key in the file content.
*
* @throws KeyNotFoundException
*
* @return array
*/
public function getKey ( $ key );مثال:
// Get all keys
$ keys = DotenvEditor:: getKey ( ' EXAMPLE_KEY ' );بناء الجملة:
/**
* Check, if a given key is exists in the file content
*
* @param string $keys
*
* @return bool
*/
public function keyExists ( $ key );مثال:
$ keyExists = DotenvEditor:: keyExists ( ' APP_URL ' );بناء الجملة:
/**
* Return the value matching to a given key in the file content
*
* @param $key
*
* @throws KeyNotFoundException
*
* @return string
*/
public function getValue ( $ key );مثال:
$ value = DotenvEditor:: getValue ( ' APP_URL ' );لتحرير محتوى الملف ، لديك وظيفتان:
ضع في اعتبارك دائمًا أن محتويات المخزن المؤقت وملف dotenv لن تكون هي نفسها إلا إذا قمت بحفظ المحتويات.
بناء الجملة:
/**
* Add empty line to buffer
*
* @return DotenvEditor
*/
public function addEmpty ();مثال:
$ editor = DotenvEditor:: addEmpty ();بناء الجملة:
/**
* Add comment line to buffer
*
* @param string $comment
*
* @return DotenvEditor
*/
public function addComment( string $ comment );مثال:
$ editor = DotenvEditor:: addComment ( ' This is a comment line ' );بناء الجملة:
/**
* Set one key to|in the buffer.
*
* @param string $key Key name of setter
* @param null|string $value Value of setter
* @param null|string $comment Comment of setter
* @param null|bool $export Leading key name by "export "
*
* @return DotenvEditor
*/
public function setKey( string $ key , ? string $ value = null , ? string $ comment = null , $ export = null );مثال:
// Set key ENV_KEY with empty value
$ editor = DotenvEditor:: setKey ( ' ENV_KEY ' );
// Set key ENV_KEY with none empty value
$ editor = DotenvEditor:: setKey ( ' ENV_KEY ' , ' anything you want ' );
// Set key ENV_KEY with a value and comment
$ editor = DotenvEditor:: setKey ( ' ENV_KEY ' , ' anything you want ' , ' your comment ' );
// Update key ENV_KEY with a new value and keep earlier comment
$ editor = DotenvEditor:: setKey ( ' ENV_KEY ' , ' new value 1 ' );
// Update key ENV_KEY with a new value, keep previous comment and use the 'export' keyword before key name
$ editor = DotenvEditor:: setKey ( ' ENV_KEY ' , ' new value ' , null , true );
// Update key ENV_KEY with a new value, remove comment and keep previous export status
$ editor = DotenvEditor:: setKey ( ' ENV_KEY ' , ' new-value-2 ' , '' );
// Update key ENV_KEY with a new value, remove comment and export keyword
$ editor = DotenvEditor:: setKey ( ' ENV_KEY ' , ' new-value-2 ' , '' , false );بناء الجملة:
/**
* Set many keys to buffer
*
* @param array $data
*
* @return DotenvEditor
*/
public function setKeys ( $ data );مثال:
$ editor = DotenvEditor:: setKeys ([
[
' key ' => ' ENV_KEY_1 ' ,
' value ' => ' your-value-1 ' ,
' comment ' => ' your-comment-1 ' ,
' export ' => true
],
[
' key ' => ' ENV_KEY_2 ' ,
' value ' => ' your-value-2 ' ,
' export ' => true
],
[
' key ' => ' ENV_KEY_3 ' ,
' value ' => ' your-value-3 ' ,
]
]);بدلاً من ذلك ، يمكنك أيضًا توفير مجموعة نقاط من المفاتيح والقيم:
$ editor = DotenvEditor:: setKeys ([
' ENV_KEY_1 ' => ' your-value-1 ' ,
' ENV_KEY_2 ' => ' your-value-2 ' ,
' ENV_KEY_3 ' => ' your-value-3 ' ,
]);بناء الجملة:
/**
* Set the comment for setter.
*
* @param string $key Key name of setter
* @param null|string $comment The comment content
*
* @return DotenvEditor
*/
public function setSetterComment( string $ key , ? string $ comment = null );مثال:
$ editor = DotenvEditor:: setSetterComment ( ' ENV_KEY ' , ' new comment ' );بناء الجملة:
/**
* Set the export status for setter.
*
* @param string $key Key name of setter
* @param bool $state Leading key name by "export "
*
* @return DotenvEditor
*/
public function setExportSetter( string $ key , bool $ state = true );مثال:
$ editor = DotenvEditor:: setExportSetter ( ' ENV_KEY ' , false );بناء الجملة:
/**
* Delete on key in buffer
*
* @param string $key Key name of setter
*
* @return DotenvEditor
*/
public function deleteKey ( $ key );مثال:
$ editor = DotenvEditor:: deleteKey ( ' ENV_KEY ' );بناء الجملة:
/**
* Delete many keys in buffer
*
* @param array $keys
*
* @return DotenvEditor
*/
public function deleteKeys ( $ keys = []);مثال:
// Delete two keys
$ editor = DotenvEditor:: deleteKeys ([ ' ENV_KEY_1 ' , ' ENV_KEY_2 ' ]);بناء الجملة:
/**
* Determine if the buffer has changed.
*
* @return bool
*/
public function hasChanged ();بناء الجملة:
/**
* Save buffer to file.
*
* @param bool $rebuildBuffer Rebuild buffer from content of dotenv file
*
* @return DotenvEditor
*/
public function save( bool $ rebuildBuffer = true );مثال:
$ editor = DotenvEditor:: save ();بناء الجملة:
/**
* Create one backup of loaded file
*
* @return DotenvEditor
*/
public function backup ();مثال:
$ editor = DotenvEditor:: backup ();بناء الجملة:
/**
* Return an array with all available backups
*
* @return array
*/
public function getBackups ();مثال:
$ backups = DotenvEditor:: getBackups ();بناء الجملة:
/**
* Return the information of the latest backup file
*
* @return array
*/
public function getLatestBackup ();مثال:
$ latestBackup = DotenvEditor:: getLatestBackup ();بناء الجملة:
/**
* Restore the loaded file from latest backup file or from special file.
*
* @param string|null $filePath
*
* @return DotenvEditor
*/
public function restore ( $ filePath = null );مثال:
// Restore from latest backup
$ editor = DotenvEditor:: restore ();
// Restore from other file
$ editor = DotenvEditor:: restore ( storage_path ( ' dotenv-editor/backups/.env.backup_2017_04_10_152709 ' ));بناء الجملة:
/**
* Delete the given backup file
*
* @param string $filePath
*
* @return DotenvEditor
*/
public function deleteBackup ( $ filePath );مثال:
$ editor = DotenvEditor:: deleteBackup ( storage_path ( ' dotenv-editor/backups/.env.backup_2017_04_10_152709 ' ));بناء الجملة:
/**
* Delete all or the given backup files
*
* @param array $filePaths
*
* @return DotenvEditor
*/
public function deleteBackups ( $ filePaths = []);مثال:
// Delete two backup file
$ editor = DotenvEditor:: deleteBackups ([
storage_path ( ' dotenv-editor/backups/.env.backup_2017_04_10_152709 ' ),
storage_path ( ' dotenv-editor/backups/.env.backup_2017_04_11_091552 ' )
]);
// Delete all backup
$ editor = DotenvEditor:: deleteBackups ();بناء الجملة:
/**
* Switching of the auto backup mode
*
* @param boolean $on
*
* @return DotenvEditor
*/
public function autoBackup ( $ on = true );مثال:
// Enable auto backup
$ editor = DotenvEditor:: autoBackup ( true );
// Disable auto backup
$ editor = DotenvEditor:: autoBackup ( false );بعض وظائف التحميل والكتابة والنسخ الاحتياطي واستعادة طريقة الدعم. لذلك يمكن تسمية هذه الوظائف بالسلاسل معًا في بيان واحد. مثال:
$ editor = DotenvEditor:: load ( ' .env.example ' )-> backup ()-> setKey ( ' APP_URL ' , ' http://example.com ' )-> save ();
return $ editor -> getKeys ();الآن ، يحتوي محرر Laravel Dotenv على 6 أوامر يمكن استخدامها بسهولة مع CLI الحرفي. هذه هي:
php artisan dotenv:backupphp artisan dotenv:get-backupsphp artisan dotenv:restorephp artisan dotenv:get-keysphp artisan dotenv:set-keyphp artisan dotenv:delete-key يرجى استخدام كل من الأوامر مع خيار --help للاستخدام هناك المزيد حول استخدام هناك.
مثال:
$ php artisan dotenv:get-backups --helpستلقي هذه الحزمة استثناءات إذا حدث خطأ ما. وبهذه الطريقة ، من الأسهل تصحيح رمزك باستخدام هذه الحزمة أو التعامل مع الخطأ بناءً على نوع الاستثناءات.
| استثناء | سبب |
|---|---|
| FileNotfoundException | عندما لم يتم العثور على الملف. |
| invalidKeyException | عندما يكون مفتاح Setter غير صالح. |
| invalidValueException | عندما تكون قيمة setter غير صالحة. |
| keynotfoundException | عندما لا يكون المفتاح المطلوب موجودًا في الملف. |
| nobackupavailablection | عندما لا يوجد ملف احتياطي. |
| UnablereadFileException | عند عدم القدرة على قراءة الملف. |
| غير قادر على ذلك | عند عدم القدرة على الكتابة إلى الملف. |
هذا المشروع موجود بفضل جميع المساهمين.
MIT © Jackie Do