Laravel projelerinde çevresel değişkenlerin kullanımı, uygulama geliştirirken sıkça karşılaştığımız konulardan biridir. Genellikle, `env()` fonksiyonu ile değişkenleri okumak için sıkça kullanılmaktadır. Örneğin:
<div class="highlight js-code-highlight">
<pre class="highlight php"><code>$apiKey = env('SMS_API_KEY');</code></pre>
</div>
<p>Veya:</p>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code>if (env('PAYMENT_PROVIDER') === 'iyzico') {
// ...
}</code></pre>
</div>
<p>Local ortamda bu kod çoğu zaman çalışır. Bu nedenle, ilk bakışta yanlış gibi görünmez. Ancak Laravel’de genel kural şudur:</p>
<blockquote>
<p><code>env()</code> sadece config dosyalarında kullanılmalı, uygulama kodunda <code>config()</code> tercih edilmelidir.</p>
</blockquote>
<p>Bu bağlamda, controller, service, job, command, middleware veya model içerisinde doğrudan <code>env()</code> kullanmak iyi bir uygulama değildir.</p>
<hr/>
<h2>
Doğru akış
</h2>
<p>Laravel’de ideal akış şudur:</p>
<div class="highlight js-code-highlight">
<pre class="highlight plaintext"><code>.env -> config/*.php -> config()</code></pre>
</div>
<p>Örneğin <code>.env</code> dosyasında şu değerler olduğunu varsayalım:</p>
<div class="highlight js-code-highlight">
<pre class="highlight plaintext"><code>SMS_API_KEY=example-keySMS_API_SECRET=example-secret
SMS_SENDER=MYAPP
<p>Bu değerleri doğrudan uygulama kodunda okumak yerine, config dosyasına taşımalıyız:</p>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code>// config/services.phpreturn [
‘sms’ => [
‘api_key’ => env(‘SMS_API_KEY’),
‘api_secret’ => env(‘SMS_API_SECRET’),
‘sender’ => env(‘SMS_SENDER’, ‘APP’),
],
];


