استفادهی صحیح از توابع Checking
تابع isset فقط وقتی مقدار FALSE برمیگردونه که متغیر وجود نداشته باشه یا مقدارش برابر null باشه. پس برای چک کردن محتوا گزینهی جالبی نیست. بیشترین کاربرد این تابع میتونه برای چک کردن آرایهها باشه:
- if(isset($_GET['AHHP'])) {
- echo 'yes';
- }
- $name = isset($_POST['Boplo.ir']) ? 'YES' : 'NO';
تعداد پارامترهای تابع isset نامشخص هست و میشه همزمان چند تا متغیر رو چک کرد. در این حالت دو تا خط زیر یکسان هستند:
- $existence = isset($a, $b, $c);
- $existence = isset($a) && isset($b) && isset($c);
مدل boolean حالتی هست که معمولا در IF استفاده میشه مثل حالت زیر
- if( $name )
- echo $name;
در برابر این نوع چک، همیشه مقدار TRUE برمیگرده غیر از موارد زیر:
- // String
- $str = "";
- // Integer
- $int = 0;
- // Float
- $float = 0.0;
- // Array
- $arr = array();
- // NULL
- $var = null;
- // Boolean
- $bool = false;
اشیاء فقط زمانی TRUE هستند که حداقل یک مشخصه (Property) داشته باشند حتی با مقدار NULL.
- class Test1 {
- public function func1(){ }
- public function func2(){ }
- public function func3(){ }
- }
- $obj = new Test1;
- if( !$obj ) {
- echo 'You will see this message!';
- }
- $obj->name = 'Amir Hossein';
- if( !$obj ) {
- echo 'You will NOT see this message!';
- }
- class Test2 {
- public $name = null;
- }
- $obj = new Test2;
- if( !$obj ) {
- echo 'You will NOT see this message!';
- }
تابع empty هم معکوس مدل boolean عمل میکنه.
در سایت PHP.net یک جدول خیلی کامل در این رابطه وجود داره که میتونه مفید باشه: Types Comparisons Table
یک نکتهی جانبی. گاهی لازمه که یک متغیر رو ابتدا به Boolean تبدیل کنیم و بعد چکش کنیم. برای این کار سه روش وجود داره:
- $str = 'Boplo.ir';
- $bool1 = (bool) $str;
- $bool2 = setType($str, 'bool');
- $bool3 = !!$str;