سلام و وقت بخیر خدمت همه دوستان عزیز، و خسته نباشید به استاد صالحی؛
union برای این به وجود اومده که ما بتوانیم برای تابع (متد) که مینویسیم، تعداد بیشتر از یه خروجی یا ورودی مشخص کنیم، مثل توی مثال زیر من هم نوع رشته و عدد رو برای تابعم در نظر گرفتم حتی اگر declare( strict_types=1 ) فعال باشه مشکلی ایجاد نمیکند، نکته مهمتر اینکه از ورژن php حتما 8 به بالا باشه، یک نمونه مقال برای union :
function add_user_to_database( string|int $username, string $email, string $password ): string|int {
return gettype( $username ) . '
' . $email . '
' . $password;
}
mix هم برای این به وجود اومده که ما بخواییم چندین مدل خروجی یا ورودی داشته باشیم مثل :int|float|bool|string|null|array|object|callable|resource ، همه رو میتونید با استفاده از mix داشته باشید، این هم یک مثال برای mix :
function add_user_to_database( mixed $username, string $email, string $password ): null|string {
return gettype( $username ) . '
' . $email . '
' . $password;
}
بنظرم بهترین گزینه استفاده از union هست یا نهایتا برای تابعی که نوشتیم یک یا دو نوع خروجی و ورودی مشخص کنیم، اگه بخواییم تعداد بیشتر در نظر بگیریم بازم مثل نسخههای قبلی میشه، البته این نظر شخصی منه شاید مشکلی توی سرعت و اجرا برنامه ایجاد نکنه.
اگر خواستید خروجی کدهای بالا رو داشته باشید میتونید از این کد استفاده کنید :
print_r( add_user_to_database( 2, 'example@gmail.com', '1234' ) );
echo ''
;
var_dump( add_user_to_database( 'meysam', 'example@gmail.com', '1234' ) );
echo '
';