CakePHP - Cấu hình dự án

Trong chương này, chúng ta sẽ hiểu Environment Variables, General Configuration, Database ConfigurationEmail Configuration trong CakePHP.

ConfigurationCakePHP đi kèm với một tệp cấu hình theo mặc định và chúng ta có thể sửa đổi nó theo nhu cầu của mình. Có một thư mục chuyên dụng“config”vì mục đích này. CakePHP đi kèm với các tùy chọn cấu hình khác nhau.

Chúng ta hãy bắt đầu bằng cách tìm hiểu các Biến môi trường trong CakePHP.

Các biến môi trường

Các biến môi trường làm cho ứng dụng của bạn hoạt động trên các môi trường khác nhau dễ dàng. Ví dụ: trên máy chủ dev, máy chủ thử nghiệm, máy chủ dàn và môi trường máy chủ sản xuất. Đối với tất cả các môi trường này, bạn có thể sử dụngenv() function để đọc cấu hình cho môi trường bạn cần và xây dựng ứng dụng của bạn.

Trong thư mục cấu hình của bạn, bạn sẽ thấy config / .env.example. Tệp này có tất cả các biến sẽ được thay đổi dựa trên môi trường của bạn. Để bắt đầu, bạn có thể tạo một tệp trong thư mục config, tức là config / .env và xác định các biến đó và sử dụng chúng. Trong trường hợp bạn cần bất kỳ biến bổ sung nào, nó có thể đi vào tệp đó.

Bạn có thể đọc biến môi trường của mình bằng cách sử dụng hàm env () như hình dưới đây:

Thí dụ

$debug = env('APP_DEBUG', false);

Giá trị đầu tiên là tên của biến môi trường bạn muốn và giá trị thứ hai là giá trị mặc định. Giá trị mặc định được sử dụng, nếu không tìm thấy giá trị nào cho biến môi trường.

Cấu hình chung

Bảng sau đây mô tả vai trò của các biến khác nhau và cách chúng ảnh hưởng đến ứng dụng CakePHP của bạn.

Sr.No Tên và mô tả biến
1

debug

Thay đổi đầu ra gỡ lỗi CakePHP.

false= Chế độ sản xuất. Không có thông báo lỗi, lỗi hoặc cảnh báo nào được hiển thị.

true = Các lỗi và cảnh báo được hiển thị.

2

App.namespace

Không gian tên để tìm các lớp ứng dụng trong.

3

App.baseUrl

Bỏ nhận xét định nghĩa này, nếu bạn không định sử dụng mod_rewrite của Apache với CakePHP. Đừng quên xóa các tệp .htaccess của bạn.

4

App.base

Thư mục cơ sở mà ứng dụng cư trú. Nếu sai, điều này sẽ tự động được phát hiện.

5

App.encoding

Xác định mã hóa mà ứng dụng của bạn sử dụng. Mã hóa này được sử dụng để tạo bộ ký tự trong bố cục và mã hóa các thực thể. Nó phải khớp với các giá trị mã hóa được chỉ định cho cơ sở dữ liệu của bạn.

6

App.webroot

Thư mục webroot.

7

App.wwwRoot

Đường dẫn tệp đến webroot.

số 8

App.fullBaseUrl

Tên miền đủ điều kiện (bao gồm cả giao thức) cho ứng dụng gốc của bạn.

9

App.imageBaseUrl

Đường dẫn web đến thư mục hình ảnh công khai trong webroot.

10

App.cssBaseUrl

Đường dẫn web đến thư mục css công cộng dưới webroot.

11

App.jsBaseUrl

Đường dẫn web đến thư mục js công cộng dưới webroot.

12

App.paths

Định cấu hình đường dẫn cho các tài nguyên không dựa trên lớp. Hỗ trợplugins, templates, locales, subkeys, cho phép xác định đường dẫn cho plugin, xem mẫu và tệp ngôn ngữ tương ứng.

13

Security.salt

Một chuỗi ngẫu nhiên được sử dụng trong băm. Giá trị này cũng được sử dụng như muối HMAC khi thực hiện mã hóa đối xứng.

14

Asset.timestamp

Thêm dấu thời gian, là thời gian sửa đổi lần cuối của tệp cụ thể ở cuối URL tệp nội dung (CSS, JavaScript, Hình ảnh) khi sử dụng trình trợ giúp thích hợp. Các giá trị hợp lệ là -

  • (bool) false - Không làm gì cả (mặc định).

  • (bool) true - Thêm dấu thời gian, khi việc gỡ lỗi là true.

  • (string) 'force' - Luôn thêm dấu thời gian.

Cấu hình cơ sở dữ liệu

Cơ sở dữ liệu có thể được định cấu hình trong config/app.php and config/app_local.phptập tin. Tệp này chứa một kết nối mặc định với các tham số được cung cấp, có thể được sửa đổi theo lựa chọn của chúng tôi.

Đoạn mã dưới đây hiển thị các thông số và giá trị mặc định, những giá trị này sẽ được sửa đổi theo yêu cầu.

Cấu hình / app_local.php

*/
   'Datasources' => [
      'default' => [
         'host' => 'localhost',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'my_app',
         'url' => env('DATABASE_URL', null),
      ],
      /*
         * The test connection is used during the test suite.
      */
      'test' => [
         'host' => 'localhost',
         //'port' => 'non_standard_port_number',
         'username' => 'my_app',
         'password' => 'secret',
         'database' => 'test_myapp',
         //'schema' => 'myapp',
      ],
   ],

Hãy để chúng tôi hiểu chi tiết từng thông số trong config/app_local.php.

Tổ chức

Tên máy chủ cơ sở dữ liệu (hoặc địa chỉ IP).

tên tài khoản

Tên người dùng cơ sở dữ liệu

mật khẩu

Mật khẩu cơ sở dữ liệu.

cơ sở dữ liệu

Tên của Cơ sở dữ liệu.

Hải cảng

Cổng TCP hoặc ổ cắm Unix được sử dụng để kết nối với máy chủ.

config / app.php

'Datasources' => [
   'default' => [
      'className' => Connection::class,
      'driver' => Mysql::class,
      'persistent' => false,
      'timezone' => 'UTC',
      //'encoding' => 'utf8mb4',
      'flags' => [],
      'cacheMetadata' => true,
      'log' => false,
      'quoteIdentifiers' => false,
      //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
   ],
]

Hãy để chúng tôi hiểu chi tiết từng thông số trong config/app.php.

khúc gỗ
Sr.No Khóa & Mô tả
1

className

Tên lớp có không gian tên đầy đủ của lớp đại diện cho kết nối đến máy chủ cơ sở dữ liệu. Lớp này chịu trách nhiệm tải trình điều khiển cơ sở dữ liệu, cung cấp cơ chế giao dịch SQL và chuẩn bị các câu lệnh SQL trong số những thứ khác.

2

driver

Tên lớp của trình điều khiển được sử dụng để triển khai tất cả các đặc điểm cụ thể cho một công cụ cơ sở dữ liệu. Đây có thể là một tên lớp ngắn sử dụng cú pháp plugin, một tên không gian tên đầy đủ hoặc một phiên bản trình điều khiển được xây dựng. Ví dụ về tên lớp ngắn là Mysql, Sqlite, Postgres và Sqlserver.

3

persistent

Có sử dụng kết nối liên tục với cơ sở dữ liệu hay không.

4

encoding

Cho biết bộ ký tự để sử dụng, khi gửi câu lệnh SQL đến máy chủ như 'utf8', v.v.

5

timezone

Múi giờ máy chủ cần đặt.

6

init

Danh sách các truy vấn sẽ được gửi tới máy chủ cơ sở dữ liệu khi và khi kết nối được tạo.

7

log

Đặt thành true để bật ghi nhật ký truy vấn. Khi các truy vấn được bật sẽ được ghi lại ở mức gỡ lỗi với phạm vi queriesLog.

số 8

quoteIdentifiers

Đặt thành true, nếu bạn đang sử dụng các từ dành riêng hoặc ký tự đặc biệt trong tên bảng hoặc cột của mình. Bật cài đặt này sẽ dẫn đến các truy vấn được tạo bằng Trình tạo truy vấn có các số nhận dạng được trích dẫn khi tạo SQL. Nó làm giảm hiệu suất.

9

flags

Một mảng liên kết của các hằng số PDO sẽ được chuyển cho phiên bản PDO bên dưới.

10

cacheMetadata

Boolean true hoặc một chuỗi chứa cấu hình bộ nhớ cache để lưu trữ dữ liệu meta. Việc vô hiệu hóa bộ nhớ đệm siêu dữ liệu không được khuyên dùng và có thể dẫn đến hiệu suất rất kém.

Cấu hình Email

Email có thể được định cấu hình trong tệp config/app.php. Không bắt buộc phải xác định cấu hình email trong config / app.php. Email có thể được sử dụng mà không có nó. Chỉ cần sử dụng các phương pháp tương ứng để đặt tất cả các cấu hình riêng biệt hoặc tải một mảng cấu hình. Cấu hình cho mặc định Email được tạo bằngconfig()configTransport().

Truyền cấu hình email

Bằng cách xác định phương tiện vận chuyển riêng biệt với hồ sơ phân phối, bạn có thể dễ dàng sử dụng lại cấu hình vận chuyển trên nhiều hồ sơ. Bạn có thể chỉ định nhiều cấu hình để sản xuất, phát triển và thử nghiệm. Mỗi phương tiện giao thông cần một className. Các tùy chọn hợp lệ như sau:

  • Mail - Gửi bằng chức năng thư PHP

  • Smtp - Gửi bằng SMTP

  • Debug - Không gửi email, chỉ trả lại kết quả

Bạn có thể thêm phương tiện vận chuyển tùy chỉnh (hoặc ghi đè phương tiện vận chuyển hiện có) bằng cách thêm tệp thích hợp vào src/Mailer/Transport. Phương tiện giao thông phải được đặt tênYourTransport.php, Ở đâu 'Your' là tên của phương tiện giao thông.

Sau đây là ví dụ về vận chuyển cấu hình Email.

'EmailTransport' => [
   'default' => [
      'className' => 'Mail',
      // The following keys are used in SMTP transports
      'host' => 'localhost',
      'port' => 25,
      'timeout' => 30,
      'username' => 'user',
      'password' => 'secret',
      'client' => null,
      'tls' => null,
      'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
   ],
],

Hồ sơ Gửi Email

Hồ sơ gửi cho phép bạn xác định trước các thuộc tính khác nhau về thư email từ ứng dụng của bạn và đặt tên cho cài đặt. Điều này giúp tiết kiệm sự trùng lặp trên ứng dụng của bạn và giúp bảo trì và phát triển dễ dàng hơn. Mỗi hồ sơ chấp nhận một số khóa.

Sau đây là một ví dụ về cấu hình gửi Email.

'Email' => [
   'default' => [
   
      'transport' => 'default',
      'from' => 'you@localhost',
   ],
],