💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ محمدرضا
استفاده از توابع در namespace
مهرداد سامی حل شده توسط مهرداد سامی

سلام

چطور داخل namespace App\Database که کلاس PDODatabaseConnection را تعریف کردیم از توابع global space مثل array_keys و array_intersect استفاده کردیم؟

مگه نباید این توابع use شوند! یعنی:

use function array_keys;
use function array_intersect;

یا اینکه اینطور فراخوانی کنیم:

\array_keys(...);
\array_intersect(...);

یعنی به همون توابع global space اشاره کردیم.

 

برای مثال اگه کدهای فایل TestCase.php خود phpunit رو هم مطالعه کنید، همه توابع مورد نیاز رو use کرده.

سلام وقت شما هم بخیر .. 

 

شما برای استفاده از متد‌های پیشفرض PHP نیازی به استفاده از کلمه use ندارید.

 

داخل کلاس TestCase کلاس‌های مختلف به همراه Trait‌ها رو use کرده.

 

موفق باشید.

مهرداد سامی ۱۴ آذر ۱۳۹۹، ۱۹:۱۳

با عرض پوزش متن بالا خوانا نیست. دوباره میپرسم.

بله درسته که توابع پیشفرض لازم نیست use شوند، ولی چرا TestCase.php توابع پیشفرض رو use کرده؟ (دلیل این کار رو متوجه نمیشم!)

مثلا نوشته:

use function array_filter;
use function array_flip;
use function array_keys;
use function array_merge;
use function array_pop;
use function array_search;
use function array_unique;
use function array_values;
محمدرضا ۱۴ آذر ۱۳۹۹، ۲۰:۲۹

این مورد دلیل فنی نداره دوست عزیز .. بیشتر برای خوانایی هستش که زمانی که  داخل پکیج میشید متوجه بشید از چه توابع و ثابت‌هایی استفاده کرده ..

داخل پکیج نویسی‌ها این مورد کم و بیش انجام میشه،‌ یکی از دلایلش هم این هست که زمانی که شما پکیجتون رو داخل گیت‌هاب قرار میدید ابزارهای آنلاینی وجود دارن که چک میکنن شما از چه متد‌هایی استفاده کردید و اگر deprecate شده باشه اون متد به شما اطلاع میده. 

 

موفق باشید.

بهترین پاسخ
مهرداد سامی ۱۶ آذر ۱۳۹۹، ۰۶:۴۶