کتابخانه‌ی استاندارد · سیستم و ابزار

محیط env

متغیرهای محیطی: خواندن با گونه‌ی درست، پرونده‌ی .env، نمایه‌ی اجرا و پوشاندن مقدارهای حساس.

واردسازی محیط
در این صفحه
  1. روال‌ها

تنظیماتی مثل درگاه سرور، نشانی پایگاه داده و کلیدهای API بهتر است در متغیرهای محیطی باشند، نه در کد. بسته‌ی محیط آن‌ها را با گونه‌ی درست می‌خواند و اگر نبودند مقدار پیش‌فرض می‌دهد. می‌تواند آن‌ها را از پرونده‌ی .env هم بارگذاری کند.

«نمایه» از متغیر SALAM_ENV خوانده می‌شود و می‌گوید برنامه در محیط توسعه، آزمایش یا تولید اجرا می‌شود.

روال‌ها

دریافت Get

روال دریافت(name: رشته): رشته
مقدار متغیر، یا رشته‌ی تهی.
env-Get.salam
واردسازی محیط

روال ریشه:
    محیط.تنظیم("PORT"، "8080")
    محیط.تنظیم("DEBUG"، "true")
    محیط.تنظیم("RATIO"، "0.75")
    سرچاپ محیط.دریافت("PORT")، محیط.دارد("PORT")، محیط.دارد("NOPE")
    سرچاپ محیط.دریافت صحیح("PORT"، ۸۰)، محیط.دریافت صحیح("NOPE"، ۸۰)
    سرچاپ محیط.دریافت منطقی("DEBUG"، نادرست)، محیط.دریافت اعشاری("RATIO"، ۱.۰)
    سرچاپ محیط.دریافت با پیش فرض("HOST"، "localhost")
    محیط.حذف("PORT")
    سرچاپ محیط.دارد("PORT")
    محیط.تنظیم("API_KEY"، "sk-1234567890abcdef")
    سرچاپ محیط.پوشاندن("sk-1234567890abcdef")، محیط.دریافت پوشیده("API_KEY")
    محیط.تنظیم("NAME"، "سلام")
    سرچاپ محیط.گسترش("زبان ${NAME} روی درگاه ${PORT:-3000}")
پایان
خروجی8080 true false 8080 80 true 0.75 localhost false sk****ef sk****ef زبان سلام روی درگاه 3000

دریافت با پیش فرض GetOr

روال دریافت با پیش فرض(name: رشته، def: رشته): رشته
مقدار متغیر، یا مقدار پیش‌فرض اگر تعریف نشده باشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

دارد Has

روال دارد(name: رشته): منطقی
اگر متغیر تعریف شده باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

دریافت صحیح GetInt

روال دریافت صحیح(name: رشته، def: صحیح۶۴): صحیح۶۴
مقدار متغیر به شکل عدد صحیح، یا پیش‌فرض اگر نباشد یا عدد نباشد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

دریافت اعشاری GetFloat

روال دریافت اعشاری(name: رشته، def: اعشار۶۴): اعشار۶۴
مقدار متغیر به شکل عدد اعشاری، یا پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

دریافت منطقی GetBool

روال دریافت منطقی(name: رشته، def: منطقی): منطقی
مقدار متغیر به شکل منطقی؛ true، 1 و yes درست حساب می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

تنظیم Set

روال تنظیم(name: رشته، value: رشته): منطقی
متغیر را برای همین برنامه و فرآیندهایی که بعد اجرا می‌کند تنظیم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

حذف Unset

روال حذف(name: رشته): منطقی
متغیر را حذف می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

پوشاندن Mask

روال پوشاندن(value: رشته): رشته
مقدار حساس را برای گزارش می‌پوشاند و فقط دو نویسه‌ی اول و آخر را نشان می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

دریافت پوشیده GetMasked

روال دریافت پوشیده(name: رشته): رشته
مقدار متغیر را پوشیده برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam

نمایه Profile

روال نمایه(): رشته
نام نمایه‌ی اجرا از SALAM_ENV.
env-Profile.salam
واردسازی محیط

روال ریشه:
    محیط.تنظیم("SALAM_ENV"، "production")
    سرچاپ محیط.نمایه()، محیط.تولید است()، محیط.توسعه است()، محیط.آزمایش است()، محیط.آزمایشی است()
    محیط.تنظیم("SALAM_ENV"، "test")
    سرچاپ محیط.نمایه()، محیط.آزمایش است()
پایان
خروجیproduction true false false false test true

تولید است IsProduction

روال تولید است(): منطقی
در نمایه‌ی تولید (production) درست است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Profile.salam

توسعه است IsDevelopment

روال توسعه است(): منطقی
در نمایه‌ی توسعه (development) درست است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Profile.salam

آزمایش است IsTest

روال آزمایش است(): منطقی
در نمایه‌ی آزمون (test) درست است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Profile.salam

آزمایشی است IsStaging

روال آزمایشی است(): منطقی
در نمایه‌ی پیش‌تولید (staging) درست است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Profile.salam

بارگذاری Load

روال بارگذاری(path: رشته): صحیح
پرونده‌ی KEY=VALUE را بارگذاری می‌کند، ولی متغیرهایی را که از قبل تعریف شده‌اند تغییر نمی‌دهد. تعداد متغیرهای خوانده‌شده را برمی‌گرداند.
env-Load.salam
واردسازی محیط
واردسازی ورودی خروجی

روال ریشه:
    ورودی خروجی.نوشتن پرونده(".env"، "DB_HOST=localhost\nDB_PORT=5432\n# توضیح\n")
    سرچاپ محیط.بارگذاری(".env")، محیط.دریافت("DB_HOST")
    محیط.تنظیم("DB_PORT"، "1")
    محیط.بارگذاری(".env")
    سرچاپ محیط.دریافت("DB_PORT")
    محیط.بارگذاری اجباری(".env")
    سرچاپ محیط.دریافت("DB_PORT")
    سرچاپ محیط.بارگذاری متن("A=1\nB=2")، محیط.دریافت("B")
    سرچاپ محیط.بارگذاری نقطه‌محیط(".env")
    ورودی خروجی.نوشتن پرونده(".env.test"، "MODE=testing\n")
    محیط.تنظیم("SALAM_ENV"، "test")
    سرچاپ محیط.بارگذاری نمایه(".")، محیط.دریافت("MODE")
پایان
خروجی2 localhost 1 5432 2 2 2 1 testing

بارگذاری اجباری Overload

روال بارگذاری اجباری(path: رشته): صحیح
مثل بارگذاری، ولی متغیرهای موجود را هم با مقدار پرونده جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Load.salam

بارگذاری متن LoadText

روال بارگذاری متن(text: رشته): صحیح
همان کار را با متن به‌جای پرونده انجام می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Load.salam

بارگذاری نقطه‌محیط LoadDotEnv

روال بارگذاری نقطه‌محیط(path: رشته): صحیح
پرونده‌ی .env را بارگذاری می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Load.salam

بارگذاری نمایه LoadProfile

روال بارگذاری نمایه(dir: رشته): صحیح
پرونده‌ی .env.نمایه را از پوشه‌ی داده‌شده بارگذاری می‌کند؛ مثلاً .env.test در نمایه‌ی آزمون.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Load.salam

گسترش Expand

روال گسترش(text: رشته): رشته
${نام} و ${نام:-پیش‌فرض} را در متن با مقدار متغیرها جایگزین می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: env-Get.salam