PHP Interview Questions php interview questions [IMP]

php interview questions and answers

1. What is PHP?

PHP (Hypertext Preprocessor) is a widely-used, open source scripting language used especially suited for web development and can be embedded into HTML. It allows developers to create dynamically generated web pages quickly and can be deployed on most web servers.

Some key features of PHP include:

  • Server-side scripting
  • Integration with various databases
  • Open source
  • Cross-platform capability
  • MVC capabilities

2. What are some popular PHP frameworks?

Some popular PHP frameworks include:

  • Laravel – An open source PHP framework that aims to make coding PHP easier through features like expressive and elegant syntax, migration system, unit testing support, and more.
  • Symfony – A set of reusable PHP components and a PHP framework to build web applications.
  • CodeIgniter – A lightweight and fast PHP framework with simplicity and ease of use as its main principles.
  • Zend – An open source framework built on PHP with components for web, mobile and web services deployment.

3. What is the difference between PHP 5 and PHP 7?

The key differences between PHP 5 and PHP 7 include:

  • Performance – PHP 7 runs up to twice as fast as PHP 5 through the utilization of next-generation scripting engine.
  • Error handling – PHP 7 comes with new error handlers and types.
  • Support – The PHP 5 branch is no longer officially supported while PHP 7 is actively supported.
  • Object oriented programming – OOP is easier and faster in PHP 7 than PHP 5.
  • Syntax – PHP 7 allows new syntax like scalar type declarations for function arguments.

4. How do you pass variables from PHP to JavaScript?

Some ways to pass variables from PHP to JavaScript include:

  • Embedding PHP variables directly into JavaScript code inside PHP script
  • Outputting PHP variables into JavaScript code using echo or print
  • Encoding PHP variables into JSON format
  • Outputting JavaScript variable assignments that make use of PHP variables
  • Using hidden HTML elements to store PHP variables to pick up later in JavaScript

For example:

<?php
$name = "John";
?>
<script>
var username = <?php echo $name; ?>;
</script>

5. What is PDO in PHP?

PDO (PHP Data Objects) is a database abstraction layer or database access layer that provides a consistent software interface to access databases in PHP. With PDO, you can connect to different databases using similar functions and methods regardless of the actual database type. Some key advantages of PDO include:

  • Database engine independence
  • Prepared statements and stored procedures
  • Reusable database connection handling
  • Error handling
  • Abstraction of database SQL commands

php interview questions and answers

6. What are traits in PHP?

Traits are a code re-use mechanism in PHP that allow methods and properties to be shared across independent classes, interfaces, and traits itself. Traits allow inheritance of behaviors similar to parent classes but without inheritance specificity issues that traditional inheritance poses. Some key characteristics of traits include:

  • Traits cannot implement interfaces or classes
  • Multiple traits can be inserted into a class
  • Conflicts between traits inserted into classes are resolved by explicit precedence order and/or method exclusion
  • Traits increase code re-use through horizontal code sharing

7. What are namespaces in PHP?

Namespaces in PHP allow for the encapsulation and modularization of classes, interfaces, functions and constants into distinct namespaces. This is to avoid collisions with identically named classes, interfaces and functions. Namespaces are declared using the namespace keyword.

Some examples of namespaces:

// Declares the namespace
namespace MyProject;
class MyClass {
public function hello() {
echo “Hello”;
}
}// Access the MyClass class
$obj = new MyProject\MyClass;
$obj->hello(); // prints “Hello”

Namespaces prevents naming collisions and allows aliases and names to be imported for easier usage.

8. What is JSON? How do you parse/create JSON data in PHP?

JSON (JavaScript Object Notation) is a lightweight data format that is used for data-interchange between server and web applications. In PHP, JSON data can be parsed and created using:

  • JSON extension functions like json_encode() and json_decode()
  • Array functions since JSON syntax is derived from JavaScript object notation

For example:

// Encoding PHP array into JSON
$phpArr = array('name'=>'John', 'age'=>30);
$jsonData = json_encode($phpArr);
// Decoding JSON string into PHP array
$jsonString = ‘{“name”:”John”, “age”:30}’;
$phpArr = json_decode($jsonString, true);

9. What are PHP sessions?

PHP sessions provide a way to store persistent data between HTTP requests across multiple PHP pages. Special PHP functions like session_start(), $_SESSION superglobal variables are used to access and manipulate session data. Some key characteristics of PHP sessions:

  • Session data persists between page requests from same site visitor
  • Each visitor accessing PHP app gets assigned a unique id stored in browser cookie
  • Session variables are stored on server-side
  • Helps create stateful applications

Sessions should be carefully implemented to not expose sensitive data.

10. What is a PHP cookie and how do you manipulate cookies?

Cookies are a mechanism of storing small amounts of data on client side that can retrieved back on server side. In PHP, cookies can be easily created, retrieved and manipulated through helper functions like:

  • setcookie() – Sets value of a cookie
  • $_COOKIE super global – Gets value of existing cookie
  • isset() – Checks if cookie exit
  • unset() – Remove/Clear a cookie

For example:

// Creating cookie valid for 1 hour
setcookie('name', 'John', time() + 3600);
// Get the set cookie
echo $_COOKIE[‘name’];

11. What are constructors and destructors in PHP?

Constructors are special methods called automatically when an object instance of a class is created. It is used to initialize resources and state of the object. In PHP, constructor method names must be same as class name prefixed with __construct.

Destructors are methods called automatically before the termination of object instances. Used to perform clean-up resources used, close connections etc. Destructor is named as magic method __destruct() in PHP.

For example:

class User {
public function __construct() {
// Initialize user state
}
public function __destruct() {
// Close database connections
}
}$user = new User(); // calls __construct() here
// When $user goes out of scope, __destruct() called

12. What are PHP magic methods?

PHP magic methods are special built-in methods names that act as triggers or handlers when certain conditions are met within an object context. For example:

  • __construct() – Triggered when an object is created
  • __destruct() – Triggered when the object is destroyed
  • __get() – Triggered when accessing undefined properties
  • __set() – Triggered when setting undefined properties

These methods can be leveraged to hook into default behavior and implement custom actions when these states occur within objects.

13. What is autoloading in PHP and how is it useful?

Autoloading in PHP allows classes, interfaces, traits to be automatically loaded only when they are used rather than requiring explicit include statements everywhere. This follow strict naming conventions like \Namespace\Classname. PHP provides spl_autoload_register() function to register autoloader functions. This makes code minimal, clean and easier to organize across namespaces. Some examples:

// Registers myAutoLoader() to autoload classes
spl_autoload_register('myAutoLoader');
function myAutoLoader($className) {
include $className . ‘.php’;
}$obj = new MyClass(); // Will load MyClass.php only now

14. What are static methods and static variables in PHP?

Static methods can be called directly without needing an object instantiation using self keyword and the double colon :: operator.

Static variables are also called class properties that are shared across all objects instances of a class. Static variables are accessed using self::$variable syntax.

For example:

class MyClass {
public static $count = 0;
public function increment() {
self::$count++;
}public static function getCount() {
return self::$count;
}
}// Call static method
MyClass::getCount(); // 0MyClass::increment();
MyClass::increment();MyClass::getCount(); // 2

15. How is Exception handling done in PHP?

PHP has an Exception class and error handling mechanism that handles errors and exceptions in applications.

When an exception is thrown, using throw new Exception, the code following it is not executed. Exceptions bubble up until caught using catch blocks where either handled, logged or reraised. Multiple catch blocks can handle different Exception classes.

Example:

try {
// Code statements
throw new Exception('Something went wrong');
} catch (Exception $e) {
// Handle exception
echo ‘Caught exception ‘, $e->getMessage();
}// Rest of the code continues execution from here

This helps inisolate crashes, log issues better and prevent wide spread crashes.

16. How can you submit a form without a submit button?

Some ways of submitting forms without conventional submit buttons include:

  • Call JavaScript submit() function on form element to trigger submission automatically
  • Use JavaScript onchange events on form inputs to trigger form submit
  • Use click() events on other elements like divs to trigger submit behind the scenes
  • Set HTML form tag attribute onsubmit="yourFunction();" to auto trigger when someone presses enter

For example:

// JS code
document.getElementById("myForm").onsubmit = function() {
// Form logic
return true
};

So form can have just inputs without submit buttons but still submit forms.

17. What are PHP filters?

PHP filters are features that filter/sanitize data by transforming them from unsafe to safe formats. Some common built-in filters include:

  • validate_email – Validate value as valid email address
  • string – Sanitize string into string type
  • int – Sanitize to integer type
  • url – Validate URL
  • ip – Validate IP address

Can be used while validating form inputs:

$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// invalid email address
}

18. What is autoloading in PHP and how is it useful?

Autoloading in PHP allows classes, interfaces, traits to be automatically loaded only when they are used rather than requiring explicit include statements everywhere. This follow strict naming conventions like \Namespace\Classname. PHP provides spl_autoload_register() function to register autoloader functions. This makes code minimal, clean and easier to organize across namespaces. Some examples:

// Registers myAutoLoader() to autoload classes
spl_autoload_register('myAutoLoader');
function myAutoLoader($className) {
include $className . ‘.php’;
}$obj = new MyClass(); // Will load MyClass.php now

19. Explain JSON in PHP?

JSON (JavaScript Object Notation) is a lightweight data format that is used for data-interchange between server and client-side web applications.

The JSON PHP extension provides functions to:

  • Encode data into JSON format using json_encode()
  • Decode JSON data into PHP arrays using json_decode()

For example:

// Encoding PHP array into JSON format
$phpArr = array('name'=>'John', 'age'=>30);
$jsonData = json_encode($phpArr);
// Decoding JSON string into PHP array
$jsonString =‘{“name”:”John”, “age”:30}’;
$phpArr = json_decode($jsonString, true);

20. What is a PHP Singleton? Give an example.

A Singleton is a pattern that restricts a class to only one single instance. Singletons have only one instance across entire application and provides global point of access to it.

In PHP, Singleton can be implemented by:

  • Making constructor private
  • Creating a static method (getInstance()) that returns static instance
  • Maintaining a static variable that holds singleton instance

For example:

class Singleton {

private static $instance;

private function __construct() {}

public static function getInstance() {
if (!isset(self::$instance)) {
self::$instance = new Singleton();
}
return self::$instance;
}

}

// Get Singleton instance
$singleton = Singleton::getInstance();

21. How can you upload files in PHP?

The common ways to upload files in PHP are:

  • Use HTML form <input> tag with type="file"
  • Set form enctype attribute to multipart/form-data
  • On submission, $_FILES array contains all file upload information
  • Use move_uploaded_file() function to save uploaded file on server
  • Perform file validation to check size, extensions for security reasons

Example:

// Check file is uploaded
if (isset($_FILES['upload'])) {
// Validate file info
$allowedTypes = [‘jpg’, ‘jpeg’, ‘png’];// Save file to uploads folder
move_uploaded_file($_FILES[‘upload’][‘tmp_name’], ‘uploads/’. $_FILES[‘upload’][‘name’]);
}

22. What are PHP Constants? How are they useful?

PHP constants allow you to assign constant values to keys that cannot be changed during runtime script execution unlike variables.

Constants are case-sensitive and defined using define() function:

// Defining constants
define('PI', 3.14);
define('TAX_RATE', 0.08);

And accessed directly using the key names:

$area = PI * $radius * $radius;

$tax = $amount * TAX_RATE;

This prevents accidental changes to commonly used values used across application and improves maintainability. Values are faster since they are hardcoded.

23. What are getters and setters in OOP?

Getters and setters are used to set and get class attributes values respectively while encapsulating implementation details.

For example:

php

Copy code

class Person {

private $name;

// Setter
public function setName($name) {
$this->name = $name;
}

// Getter method
public function getName() {
return $this->name;
}

}

$person = new Person();

// Call setter
$person->setName(‘John’);

// Call getter
echo $person->getName(); // Prints ‘John’

Advantages include ability to validate data, prevent direct access, conditional checks before setting values etc.

24. How can you connect to a database in PHP?

Some common ways to connect PHP applications to databases include:

  • Using built-in extensions like mysqli, PDO for MySQL
  • Pass host, username, password, dbname to establish DB connection
  • Execute SQL statements using methods provided by database extensions
  • Use prepared statements and stored procedures for security

For example:

// Connect to MySQL using PDO

$db = new PDO(‘mysql:host=localhost;dbname=testdb;charset=utf8mb4’, ‘username’, ‘password’);

$stmt = $db->query(“SELECT * FROM users”);

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row[‘name’];
}

25. What are PHP Data Objects (PDO)?

PDO (PHP Data Objects) is a database abstraction library used to connect to databases in PHP. PDO provides a consistent software interface with methods to perform actions on databases using Prepared Statements irrespective of the actual database type. Benefits include:

  • Database engine independence
  • Connection handling and management
  • Prepared statements to prevent SQL injections
  • Error handling through exceptions
  • Reusable methods across database types like MySQL, PostgreSQL etc
  • Improved security

26. What is difference between PHP echo and print statements?

  • echo and print output content in PHP however there are some key differences:
echo print
Faster because it has no return value Slower compared to echo
Can take multiple parameters Takes single argument
No parentheses required Needs parentheses
Can be used as part of bigger expressions Cannot be used in expressions

 

For example:

echo $x;
echo "Hello ", "world!";
print($x);
print “Hello world!”; // Syntax error

So echo avoids extra parentheses, can insert inline with other code which makes it most preferred for basic string outputs.

27. What are Magic constants in PHP?

Magic constants are built-in pseudo-constants that return information about where they are referenced relative to file paths and folders. For example:

  • __FILE__ – Full path and filename of current file
  • __DIR__ – Directory path of current file

28. What is method overloading and overriding in PHP?

PHP does not support method overloading like other OOP languages. But similar behavior can be achieved by:

  • Declaring method names with different signatures by varying the number, types of arguments
  • Having the same method name trigger different implementations

Method overriding allows child classes to change the implementation of parent class methods by redeclaring the same method names. Overriding enables polymorphism.

For example:

class ParentClass {
public function getInfo($name) {
// Parent method code
}
}
class ChildClass extends ParentClass {
// Override method
public function getInfo($name, $age) {
// Child method code
}
}

29. How can you improve performance of PHP applications?

Some ways to improve PHP application performance include:

  • Enable bytecode caching with tools like OPcache
  • Use persistent database connections instead of reconnecting everytime
  • Store cached data in memcached or Redis
  • Enable PHP compression with Zlib module
  • Set valid Expires headers for browser caching static assets
  • Use a PHP accelerator like XCache or APC
  • Optimize autoloading with classmaps over file I/O scans
  • Improve algorithm efficiency and execute expensive tasks asynchronously

30. What are Conditional statements used in PHP?

Like other languages PHP has constructs like:

  • if statements – Executes code block if condition evaluates to true
  • if-else statement – Executes one block on true condition, other block otherwise
  • elseif clause – Chain additional conditions
  • switch statements – Matches expression against case clauses

For example:

$age = 20;
if ($age > 18) {
echo "Eligible to vote";
} else {
echo "Not eligible to vote";
}

31. What are some string functions in PHP?

Some common PHP string functions include:

  • strlen() – Returns string length
  • str_replace() – Replace all occurrences of a string
  • strtolower() – Convert string to lower case
  • substr() – Return substring from string
  • trim() – Strip whitespace (or other chars) from beginning or end of string
  • strpos() – Find position of first occurrence of a string
  • explode() – Split string into array by delimiter

For example:

$text = "Hello world";
echo strlen($text); // 11
echo strtolower($text); // “hello world”

32. What are PHP arrays? What types of arrays exist in PHP?

Arrays represent collection of elements. There are 3 main types of arrays in PHP:

Indexed arrays – Arrays with numeric indexes:

$colors = ["red", "green", "blue"]; // array(0 => "red", 1 => "green", 2 => "blue")

Associative arrays – Arrays with named keys:

$ages = ["John" => 30, "Jane" => 20];

Multidimensional arrays – Arrays containing other arrays:

$details = [
["name" => "John", "age" => 30],
["name" => "Jane", "age" => 20]
];

Built-in functions like print_r(), var_dump() debug arrays.

33. What are function arguments in PHP?

Function arguments represent values that are passed into functions when they are called. Arguments are specified when functions are declared.

For example:

// Function accepts 2 parameters / arguments
function addNumbers($num1, $num2) {
return $num1 + $num2;
}
echo addNumbers(2, 5); // 7

Arguments can have default values:

function storeData($data, $format="json") {
// Function body
}

PHP also supports passing arguments by reference.

34. What are PHP anonymous functions/closures?

Anonymous functions also called closures allow functions to be declared and defined inline without a named identifier. Closures have access to variables in parent scope which forms a closure.

Basic syntax:

$sum = function($a, $b) {
return $a + $b;
};
echo $sum(10, 15); // 25

Closures are passed as callable parameters to other functions or assigned to variables. This avoids declaring small one-off functions separately.

35. What is difference between exit() and die() in PHP?

  • exit() and die() are language constructs in PHP that terminate execution of scripts.
  • die() displays result before exiting but exit() not.
  • exit() is faster compared to die() function.
  • die() also logs call stack trace which exit does not when error level is set.

So in essence:

// Terminate processing and display result
die("Goodbye!");
// Exit directly without string output
exit();

36. What are PHP namespaces? Why are they used?

Namespaces provide a solution to collision of class names, functions with same names defined in different libraries or files. Namespaces can group functionally related classes, functions together into a namespace.

For example code from Laravel framework is contained inside Laravel namespace:

namespace Laravel;

class Request {
//…
}

$request = new Laravel\Request();

Namespaces prevent naming collisions. Multiple namespaces can be defined across PHP code.

37. What are recursive functions in PHP?

Recursive functions are functions that call themselves to repeat a task recursively till a condition is met. Typical structure:

function recurse() {

// terminate condition
if(condition) {
return ;
}

// logic here is executed recursively
recurse();

}

For example calculating factorial of a number:

function factorial($num) {

// terminate
if($num == 1) {
return 1;
}

// function calls itself
return $num * factorial($num 1);

}

echo factorial(5); // 120

38. What are some JSON functions in PHP?

Some commonly used JSON functions in PHP include:

  • json_encode() – Return JSON representation of value
  • json_decode() – Decodes JSON data into PHP data types
  • json_last_error() – Returns last JSON error code
  • json_last_error_msg() – Returns error message from last JSON handling

For example:

// Encoding array into JSON string
$data = ["name" => "John", "age" => 25];
$jsonData = json_encode($data);
// Decoding JSON string
$jsonString = ‘{“name”:”John”, “age”:25}’;
$phpArr = json_decode($jsonString, true);

39. How can you implement encapsulation in PHP?

Encapsulation is implemented in PHP using:

  • Access modifiers – publicprotected and private keywords to control visibility.
  • Getters & Setters – Manage access to properties indirectly.
  • Interfaces – Hide functionality details.
  • Anonymous classes – Private, constant only scope.

This restricts direct access to properties and methods, reduces coupling leading to more reusable code.

40. What is difference between PHP includes and requires?

  • include – Includes and evaluates a specified file, warnings only on failure
  • require – Same as include except throws a fatal error on failure

So require fails with critical error which stops script while include does not halt script execution on failure.

41. What are some HTTP request methods supported in PHP?

Some common HTTP/1.1 request methods natively supported by PHP include:

  • GET – Request data from a resource
  • POST – Submit data to be processed to a resource
  • HEAD – Get metadata information about resource
  • OPTIONS – Returns available HTTP methods for resource
  • PUT – Replace target resource with request payload
  • DELETE – Deletes specified resource
  • PATCH – Update partial resources with payload

For example:

$_SERVER['REQUEST_METHOD']; // Contains method

42. What are custom error levels in PHP?

By default PHP has error level constants like – E_ERROR, E_WARNING etc. Custom error levels can be defined using E_USER levels for user-defined logging:

// Custom level withcode 64
$customLevel = E_USER_ERROR + 64;
trigger_error(“Message”, $customLevel);if (error_reporting(E_USER_ERROR + 64)) {
// Error handler logic
}

Custom errors invoke user error handlers. This allows apps to define custom error handling.

43. Why store passwords hashed in database? How do you prevent SQL injection?

Passwords should always be hashed using one-way hashing algorithms like bcrypt before storing in databases. This encrypts them so plaintext passwords are not exposed publicly. Salting and stretching hash iterations improves more security.

SQL injections can be prevented by:

  1. Using prepared parameterized statements that separates SQL from parameters sent.
  2. Input validation of unsafe strings before queries
  3. Escaping user input using mysqli_real_escape_string()
  4. Limiting database account permissions.

44. How can you upload files asynchronously using PHP?

Synchronous form-based file uploads blocks execution till completion. Asynchronous uploads allow parallel processing without blocking.

Some ways to upload files async using PHP:

  1. Upload file data with AJAX requests
  2. Handle upload directly with Dropzone.js uploading via AJAX
  3. Upload files to temporary area and process later with queues

For example:

// Asynchronously upload file via AJAX
var formData = new FormData();
formData.append(‘file’, file);fetch(‘/uploads’, {
method: ‘POST’,
body: formData
});

45. What are interfaces in PHP?

Interfaces are templates that consists only method declarations without actual code implementation. They can include constants but cannot contain properties. Code classes can implement interfaces which enforces them to use the methods declared in interface.

interface Logger {
public function log(string $msg);
public function error(string $error);
}
// Implement interface
class ConsoleLogger implements Logger {
public function log(string $msg) {
echo $msg;
}// Implements error() method
}

Key benefits includes consistency via contractual methods, looser coupling and polymorphism.

46. What is method chaining in PHP?

Method chaining is a pattern that simplifies code by connecting methods of an object in a single statement. Each method returns the object instance to allow this.

class Car {

public function setModel($model)
{
// Logic to set model
return $this;
}

public function setYear($year)
{
// Set year logic
return $this;
}

}

$car = (new Car())
->setModel(“Toyota”)
->setYear(2020);

Instead of separate statements, methods are chained together improving code flow and simplicity.

47. What are Associative arrays in PHP?

Associative arrays consist of key-value pairs like:

$person = [
'name' => 'John',
'age' => 20
];
echo $person[‘name’]; // John

The key can either be an integer or string that identifies the elements.

Associative arrays do not have numeric indexes unlike indexed/linear arrays but explicit keys defined that map to specific values allowing more flexibility.

48. How can you secure your PHP codebase?

Some ways to improve PHP application security include:

  • Input validation and sanitization
  • Parameterized queries to prevent SQL injections
  • Encrypt sensitive user data before storing
  • Use hashed passwords with salt stretching
  • Enable CORS restrictions for API access
  • Use notoriously secure methods like Stripe for payments
  • Maintain clean permission model across resources
  • Mask errors shown in production
  • Use security headers

49. What are some SQL statements used in PHP?

Some common SQL statements that interact with databases in PHP include:

DML

  • SELECT – Retrieve records from database tables
  • INSERT – Insert new records into a database table
  • UPDATE – Modifies existing records in table
  • DELETE – Deletes records from database

DDL

  • CREATE TABLE – Create new database table schema
  • ALTER TABLE – Modify existing tables
  • DROP TABLE – Delete existing table

DCL

  • GRANT – Provide user access privileges
  • REVOKE – Remove user access

50. What are conditional statements supported in PHP?

Some conditional statements supported:

  • if – Executes code if condition is true
  • elseif – Added conditions
  • else – Executes if above conditions fail
  • switch – Matches cases, optional default case
  • ? : – Ternary conditional operator

For example:

$age = 15;
if ($age > 18) {
echo "Eligible";
} else {
echo "Not eligible";
}

Leave a Reply

Your email address will not be published. Required fields are marked *