Tôi mới bắt đầu làm việc với Laravel. Tôi cần viết lại toàn bộ hệ thống mà tôi đã tạo vài năm trước, sử dụng Laravel 4 làm khung cơ sở. Trong hệ thống cũ của mình, tôi đã từng có một constant.php
tệp với một số hằng số được khai báo và một globals.php
tệp chứa rất nhiều tập hợp mảng (ví dụ: trạng thái danh mục, loại sự kiện, lang, v.v.). Bằng cách đó, tôi có thể sử dụng một số thứ như
foreach ( $langs as $code => $domain ) {
// Some stuff
}
bất kỳ đâu trong ứng dụng của tôi.
Câu hỏi của tôi là, làm thế nào tôi có thể lưu trữ thông tin đó trong cái gọi là "cách laravel". Tôi đã thử sử dụng một số loại đối tượng để lưu trữ thông tin này, đặt đây là một dịch vụ và tạo cho nó một mặt tiền:
app / Library / Project / Constants.php
namespace PJ;
class Constants {
public static $langs = [
'es' => 'www.domain.es',
'en' => 'www.domain.us',
'uk' => 'www.domain.uk',
'br' => 'www.domain.br',
'it' => 'www.domain.it',
'de' => 'www.domain.de',
'fr' => 'www.domain.fr'
];
}
app / Library / Project / ConstantsServiceProvider.php
namespace PJ;
use Illuminate\Support\ServiceProvider;
class ConstantsServiceProvider extends ServiceProvider {
public function register() {
$this->app->singleton('PJConstants', function() {
return new Constants;
});
}
}
app / Library / Project / ConstantsFacade.php
namespace PJ;
use Illuminate\Support\Facades\Facade;
class ConstantsFacade extends Facade {
protected static function getFacadeAccessor() {
return 'PJConstants';
}
}
nhà soạn nhạc.json
"psr-4": {
"PJ\\": "app/libraries/Project"
},
và vì vậy tôi truy cập thuộc tính đó với tư cách PJ\Constants::$langs
.
Điều này hoạt động, nhưng tôi nghi ngờ nó là cách hiệu quả nhất hoặc đúng để làm điều đó. Ý tôi là, đó có phải là cách phù hợp để "truyền bá" một biến bằng cách tạo toàn bộ Nhà cung cấp dịch vụ và các mặt tiền và tất cả những thứ như vậy không? Hoặc tôi nên đặt dữ liệu này ở đâu?
Cảm ơn vì bất kỳ lời khuyên.
CHỈNH SỬA # 01
Dữ liệu tôi muốn chuyển cho tất cả bộ điều khiển và chế độ xem có thể được đặt trực tiếp trong tập lệnh, như trong ví dụ ở đầu bài đăng của tôi, nhưng nó cũng có thể được tạo động, từ cơ sở dữ liệu chẳng hạn. Dữ liệu này có thể là một danh sách các danh mục. Tôi cần chúng trong tất cả các chế độ xem để tạo thanh điều hướng, nhưng tôi cũng cần chúng để xác định một số mẫu định tuyến (như /category/subcategory/product
) và cũng để phân tích cú pháp một số thông tin trong một số bộ điều khiển (Như lấy thông tin từ danh mục chứa sản phẩm X).
Mảng của tôi giống như sau:
$categories = [
1 => ['name' => 'General', 'parent' => 0, 'description' => 'Lorem ipsum...'],
2 => ['name' => 'Nature', 'parent' => 0, 'description' => 'Lorem ipsum...'],
3 => ['name' => 'World', 'parent' => 0, 'description' => 'Lorem ipsum...'],
4 => ['name' => 'Animals', 'parent' => 2, 'description' => 'Lorem ipsum...']
]
Chỉ là một ví dụ. Chỉ mục là id của danh mục và Giá trị là thông tin được liên kết với danh mục.
Tôi cũng cần mảng này, có sẵn trong tất cả Bộ điều khiển và Chế độ xem.
Vì vậy, tôi có nên lưu nó dưới dạng biến Cấu hình không? Tôi có thể lưu trữ những dữ liệu này bằng cách nào khác; cách tốt nhất và đúng ngữ nghĩa là gì?