Wednesday, 13 February 2019

PHP 7 interview Questions and Answers

PHP 7 interview Questions and Answers

Question: What is class Constants?
You can define constant as string OR expression within the class. but you can not define class as variable, or function.


Question: When will Autoloading function will be called once defined?
a) spl_autoload_register (autoload) will called when create object of class.
b) spl_autoload_register will called when extend by any class (using extends).
c) spl_autoload_register will called when implements an interface (using implements ).


Question: What is visibility? What are different type of visibility in class?
visibility means setting the access level of data member and member function.
Class methods must be declare as public, protected or private.
You can also declare with var which means public


Question: What is 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.


Question: Tell me about Abstraction in PHP?
  1. Classes defined as abstract may not be instantiated.
  2. Class that contains at least one abstract method must also be abstract.
  3. When inheriting from an abstract class, all methods marked abstract in the parent's class declaration must be defined by the child.
  4. if the abstract method is defined as protected, the function implementation must be defined as either protected or public, but not private.



Question: Tell me about Interface in PHP?
  1. We use "interface" keyword to create class.
  2. All methods declared in an interface must be public.
  3. To implement an interface, the implements operator is used.
  4. We can include multiple interface while implementing



Question: Tell me about Traits in PHP?
Traits are a mechanism for code reuse in single inheritance languages such as PHP.
We can't create instance of a traits
We can create Traits as below
    
trait Hello {
        public function sayHello() {
            echo 'Hello ';
        }
    }
We can use multiple traits using comma like below
 use Hello, World;
When two traits have same function, it would conflict but we can fix using insteadof like below
A::bigTalk insteadof B;
We can set the visibility of function using "as" like below
use HelloWorld { sayHello as protected; }
We can use one trait from another using "use"
we can also define abstract,static, data members, method


Question: Tell me about Anonymous classes?
We can create a class without specifing the class-name. Following are example
$util->setLogger(new class {
    public function log($msg)
    {
        echo $msg;
    }
});


Question: What is Overloading in PHP?
Overloading in PHP provides means to dynamically create properties and methods.
These dynamic entities are processed via magic methods one can establish in a class for various action types.
example of magic functions __get(), __set(), __isset(), __unset(), __call(),__callStatic() etc


Friday, 1 February 2019

PHP 7 New Features

PHP 7 New Features

Question: What are main features of PHP 7?
  1. Lower Memory Consumption
  2. Improved performance as now using Zend Engine 3.0
  3. Consistent 64-bit support
  4. Scalar type declarations
  5. Return type declarations
  6. define() updates: Now you can add array.
  7. unserialize updates: Provide better security when unserializing objects on untrusted data
  8. Anonymous classes can be created
  9. Null coalescing operator (??) have been added
    Namespaces declaration like use some\namespace\{ClassA, ClassB, ClassC as C};
  10. Many fatal errors converted to Exceptions
  11. Secure random number generator
  12. session_start will accept an array.
  13. Spaceship operator
  14. 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.
  1. coercive - coercive is default mode and need not to be specified.
  2. 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?
  1. Namespace must be the first statement in the PHP Script.
  2. We can define Sub-Namespace also
  3. Defining multiple namespaces in same file with/without using bracketed syntax (Multiple declaration is not Recommended)
  4. We can access the Global method of namespaces using \
    namespace A\B\C;
            function strlen($string){
                return \strlen($string).'--arun';
            }
        echo strlen('imarun');
  5. we can use __NAMESPACE__ for getting the current namespace name
  6. We can use Alias for namespace as below
    use mynamespace\car as mycar;
  7. 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};  
  8. 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