Question: What are main features of PHP 7?
- Lower Memory Consumption
 - Improved performance as now using Zend Engine 3.0
 - Consistent 64-bit support
 - Scalar type declarations
 - Return type declarations
 - define() updates: Now you can add array.
 - unserialize updates: Provide better security when unserializing objects on untrusted data
 - Anonymous classes can be created
 - Null coalescing operator (??) have been added
Namespaces declaration like use some\namespace\{ClassA, ClassB, ClassC as C}; - Many fatal errors converted to Exceptions
 - Secure random number generator
 - session_start will accept an array.
 - Spaceship operator
 - list() function updates
 
Question: What is null coalescing operator?
null coalescing operator (??) has been introduced in PHP7.
$username = $_GET['username'] ?? $_POST['username'] ?? 'not passed'; print($username);
Question: What are Scalar type declarations?
Scalar type declarations has two type of options.
- coercive - coercive is default mode and need not to be specified.
 - strict - strict mode has to explicitly hinted.
 
Question: What is Namespaces?
Namespaces are a way of encapsulating items. we can use two more different classes into one Namespaces.
Question: What is purpose of Namespaces?
1) To fixed the name collisions between your code and internal PHP classes/functions/constants or third-party classes/functions/constants.
2) Ability to shorten for Extra_Long_Names, improving readability of source code.
Question: Explain about Namespaces in PHP7?
- Namespace must be the first statement in the PHP Script.
 - We can define Sub-Namespace also
 - Defining multiple namespaces in same file with/without using bracketed syntax (Multiple declaration is not Recommended)
 - We can access the Global method of namespaces using \
        
namespace A\B\C; function strlen($string){ return \strlen($string).'--arun'; } echo strlen('imarun'); - we can use __NAMESPACE__ for getting the current namespace name
 - We can use Alias for namespace as below
        
use mynamespace\car as mycar;
 - import multiple namespaces in single line
        
use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC}; - Using namespaces: fallback to global function/constant
a) An unqualified class name resolve to current namespace
b) An unqualified function name resolve to current namespace
c) An unqualified constant name resolve to Global namespace
 
Question: What is Class Constants?
Class Constants: You can define constant as string OR expression. but you can not define as variable, or function.
Question: When autoloading classes loads automatic?
a) Autoload when create object.
b) Autoload when include an another (using extends)
c) Autoload when include an interface (using implements )
d) we Can add exception in spl_autoload_register
Question: What is Visibility?
Class methods must be declare as public, protected or private.
You can also declare with var which means public
Question: What are Static Keyword?
Declaring class property or methods as static makes them accessible without needing an instantiation of the class.
$this is not available inside the function.
