<?php

 ///declare(strict_types = 0);

class User {


    public static $name;

    private $pass;

    const ROLE = "user";
    const APP_VERISON = "1.0.0";

    public static function printInfo($age) {


        return   self::$name . " is " . $age . " years old";

        
    }

    // public static function verifyEmail($email) {

    //     echo "email is verified and your email is: " . $email;
    // }

    private function printEmail() {

        echo "hello from my print email method";
    }

    public function __get($prop) {

        echo "the property: '$prop' is not found or private <br>";
    }


    public function __set($prop, $value) {

        echo "the property: '$prop' is not found or private. value is: $value<br>";

    }


    public function __call($method, $args) {

        echo "method '$method' does not exist or it's private and argument is: " . implode($args);
    }


    public static function __callStatic($method, $arguments) {

        echo "static method '$method' does not exist or it's private and argument is: " . implode($arguments);

    }


    public function __toString() {

        return "user is an object, it cannot be converted to string";
    }

    public function __invoke($name) {

        return "$name is an object and not a method ";
    }


    public function verifyMobileNumber(int $number) {

        echo $number;
    }


    public function giveMeString(): int {

        return 1234;
    }

}


$user = new User;

$user->verifyMobileNumber("dsdsd");

// echo $user->giveMeString();
// echo $user;

// echo "<br>";
// echo $user("user");
// echo $user->pass;
// echo $user->age;


// $user->pass = "1234";

// $user->email = "webcoding@gmail.com";

// $user->printEmail("moha@gmail.com");

// User::verifyEmail("moha@gmail.com");
// echo User::APP_VERISON;
// echo User::ROLE;
// User::$name = "Mohamed";

// echo User::$name;

// echo "<br>";

// echo User::printInfo(21);
