Với việc phát hành Laravel 6, tôi đã thay đổi Shift để mặc định các tệp cấu hình thành phiên bản mới nhất của chúng
Chủ yếu điều này đã được thực hiện để cải thiện trải nghiệm người dùng. Trước đây, người dùng phải tải xuống các phiên bản mới nhất của tệp cấu hình và so sánh chúng theo cách thủ công để xác định các thay đổi
Bằng cách đặt mặc định các tệp này và thực hiện như vậy trong một cam kết nguyên tử, các thay đổi có thể được xem trực tiếp như một phần của yêu cầu kéo Shift mở ra. Điều này cho phép người dùng xem nội tuyến sự khác biệt giữa các tệp này và dễ dàng chèn lấp [hoặc hoàn nguyên] các tùy chỉnh của họ
Thứ hai, điều này phù hợp với khuyến nghị của tôi để giữ các tệp cấu hình ở chế độ mặc định nhất có thể
Điều này không chỉ xuất hiện với tư cách là người tạo ra Shift mà còn với tư cách là nhà phát triển duy trì gần một tá ứng dụng Laravel
Các tệp cấu hình là các tệp được thay đổi nhiều nhất giữa các phiên bản Laravel. Điều này không chỉ trong các bản phát hành chính. Các bản phát hành hàng tuần chứa các thay đổi đối với các tệp cốt lõi. Ngay từ Laravel 6. 0 các tập tin cấu hình đã thay đổi 10 lần
Vì những lý do này, tất cả các Ca nâng cấp của Laravel hiện đều mặc định các tệp cấu hình và ủng hộ việc giữ các tệp này ở dạng mặc định nhất có thể để cung cấp đường dẫn nâng cấp mượt mà hơn cho các phiên bản trong tương lai
Sự thật phũ phàng
Hầu hết các nhà phát triển không cập nhật các tệp này. Mặc dù bạn có thể thoát khỏi điều này trong một thời gian, nhưng sớm hay muộn bạn sẽ phải vò đầu bứt tai khi xem một thông báo lỗi khó hiểu
Tôi hiểu rằng phản hồi phổ biến là các tệp này được dùng để thay đổi. Đó là một điểm hoàn toàn công bằng. Quan điểm của tôi là nhiều hơn về khả năng bảo trì
Thường thì những thay đổi do Laravel hoặc nhà phát triển thực hiện là hời hợt. Nhận xét lỗi thời, thay đổi mặc định, giới thiệu các biến môi trường mới
Shift có thể xử lý các thay đổi do Laravel thực hiện. Những điều này để lại cho chúng tôi những thay đổi của nhà phát triển. Và hầu hết các tùy chỉnh là không cần thiết hoặc ít nhất có thể được thực hiện theo cách khác
Chúng ta hãy xem xét một số tùy chỉnh phổ biến nhất mà tôi thấy và các tùy chọn thay thế giúp ứng dụng của bạn dễ bảo trì hơn
Tận dụng các biến môi trường
Tôi thấy rất nhiều ứng dụng sao chép hoặc ghi đè các tùy chọn cấu hình thay vì
Ví dụ, một cách phổ biến là thiết lập cơ sở dữ liệu thử nghiệm
1'sqlite_testing' => [
2 'driver' => 'sqlite',
3 'url' => env['DATABASE_URL'],
4 'database' => storage_path['app/database.sqlite'],
5 'prefix' => '',
6 'foreign_key_constraints' => env['DB_FOREIGN_KEYS', true],
7],
Điều này thêm một tùy chọn cấu hình mới sẽ cần được sao chép trong tất cả các phiên bản tương lai của tệp cấu hình
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
2Thay vì thêm tùy chọn cấu hình mới, bạn có thể tận dụng tùy chọn cấu hình
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
3 hiện có và đặt biến môi trường 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
4 và 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
5Hơn nữa, đối với cấu hình thử nghiệm, điều này có thể được thực hiện rõ ràng hơn trong tệp
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
6 hoặc ghi đè chúng trong tệp cấu hình 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
7Tầng của cấu hình
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
7 trên cấu hình môi trường cho phép cấu hình tối thiểu, cụ thể của môi trường thử nghiệmKhi sử dụng
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
9, bạn cũng có thể thiết lập rõ ràng môi trường bằng cách sử dụng tùy chọn 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
0Vì vậy, khi có sẵn một biến môi trường, bạn có thể sử dụng nó để tránh thực hiện các thay đổi không cần thiết đối với các tệp cấu hình và có được sự linh hoạt hơn trong việc định cấu hình ứng dụng của mình
Giờ đây, một số nhà phát triển muốn ghi đè lên các giá trị mặc định thay vì phải đặt biến môi trường cho mọi môi trường. Tôi hiểu điều này có vẻ giống như một cách tiếp cận dễ dàng hơn. Nghĩa là đặt một giá trị ở một vị trí thay vì nhiều vị trí
Tuy nhiên, đây là một sự đánh đổi ngắn hạn. Mặc dù bạn chỉ thay đổi điều này một lần từ góc độ cấu hình, nhưng bạn sẽ thay đổi nó nhiều lần khi bạn duy trì giá trị này trên các phiên bản khung trong tương lai
Khi xem xét về lâu dài, việc thiết lập những điều này thông qua một biến môi trường thực sự trở nên dễ dàng hơn
Tùy chọn cấu hình tùy chỉnh
Một cách sử dụng phổ biến khác của các tệp cấu hình là các giá trị tùy chỉnh. Đây là những ứng dụng cụ thể hoặc phần bổ sung cho các phần
Ví dụ: các cài đặt dành riêng cho ứng dụng được thêm vào tệp cấu hình
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
1, trình điều khiển cơ sở dữ liệu được thêm vào tệp cấu hình 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
2 hoặc các dịch vụ bổ sung được thêm vào tệp cấu hình 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
3Tất cả đều là những vị trí hợp lý để thêm các tùy chỉnh đó. Nhưng những thứ này vẫn phải được mang theo giữa mỗi lần nâng cấp. Vì những lý do đó, tôi cố gắng tách các giá trị này ở nơi tôi có thể
Nhìn lại những ví dụ này, hãy bắt đầu với tệp cấu hình
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
1. Thay đổi phổ biến nhất ở đây là đăng ký nhà cung cấp và bí danh. Tuy nhiên, với , những điều này phải là tối thiểuĐiều này để lại các cài đặt cụ thể cho ứng dụng. Tôi muốn đặt những thứ này trong tệp cấu hình dành riêng cho miền của mình. Đôi khi tôi sẽ gọi đây là
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
5 hoặc sử dụng tên ứng dụngVí dụ: Shift có tệp cấu hình
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
6 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
Trong tệp cấu hình tùy chỉnh này, tôi không chỉ đặt các giá trị cấu hình cụ thể cho ứng dụng mà còn cả các tùy chọn mà bạn có thể muốn thấy trong một số thứ như
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
7Điều này có vẻ xa lạ. Nhưng tệp này được tải giống như bất kỳ tệp cấu hình nào khác. Như vậy, tôi có thể tham chiếu các giá trị này bằng cách sử dụng
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
8 từ bất kỳ đâu trong ứng dụng của mình. Ví dụ, 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
9Sử dụng một tệp cấu hình riêng cũng có nghĩa là tôi không phải lo lắng về việc duy trì các giá trị này trong một trong các tệp cấu hình cốt lõi. Một lần nữa, các tệp này luôn thay đổi và không có gì đảm bảo rằng ngay cả các tùy chọn cấu hình cốt lõi sẽ vẫn còn. Ví dụ: cấu hình dịch vụ Stripe đã bị xóa khỏi tệp cấu hình
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
7 trong Laravel 6Vì vậy, hãy luôn nhớ rằng bạn có thể tự do di chuyển các tùy chọn cấu hình sang tệp cấu hình tùy chỉnh để cải thiện khả năng bảo trì ứng dụng của mình
Đối với một số dịch vụ tích hợp như trình điều khiển
1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
21 hoặc 1return [
2
3 'executable' => env['SHIFT_SCRIPT_PATH', '/opt/shift/main.php'],
4
5 'webhook_executable' => env['WEBHOOK_SCRIPT_PATH', '/opt/shift/webhook.php'],
6
7 'support_email_address' => env['SHIFT_SUPPORT_EMAIL_ADDRESS'],
8
9 'latest_sku' => env['SHIFT_LATEST_SKU'],
10
11 'services' => [
12
13 'github' => [
14 'shift_username' => env['GITHUB_USERNAME'],
15 'client_id' => env['GITHUB_CLIENT_ID'],
16 'client_secret' => env['GITHUB_CLIENT_SECRET'],
17 'redirect' => env['GITHUB_CALLBACK_URL'],
18 ],
19
20 'gitlab' => [
21 'shift_user_id' => env['GITLAB_USER_ID'],
22 'client_id' => env['GITLAB_APP_ID'],
23 'client_secret' => env['GITLAB_SECRET'],
24 'redirect' => env['GITLAB_CALLBACK_URL'],
25 ],
26
27 'bitbucket' => [
28 'shift_username' => env['BITBUCKET_USERNAME'],
29 'client_id' => env['BITBUCKET_KEY'],
30 'client_secret' => env['BITBUCKET_SECRET'],
31 'redirect' => env['BITBUCKET_CALLBACK_URL'],
32 ],
33
34 ]
35];
22, bạn có thể không có tùy chọn này. Bạn sẽ cần thực hiện các tùy chỉnh đối với tệp cấu hình lõi cụ thểMột tương lai dễ dàng hơn
Tất cả các đề xuất này đều nhằm mục đích cải thiện trải nghiệm của nhà phát triển vì nó liên quan đến việc duy trì ứng dụng Laravel của bạn
Như mọi khi, tôi sẽ tiếp tục cải thiện Shift để phát hiện các tùy chỉnh và cố gắng chèn lấp chúng
Tuy nhiên, thực hiện những điều chỉnh nhỏ này cho quy trình phát triển của bạn ngay bây giờ sẽ giúp bạn tạo ra một ứng dụng Laravel dễ bảo trì hơn cho tương lai