1. Advanced PHP Features
Namespaces and Autoloading
// NamespaceExample.php
namespace MyNamespace;
class NamespaceExample {
public function sayHello() {
echo "Hello from NamespaceExample!\n";
}
}
// AutoloadingExample.php
spl_autoload_register(function ($class) {
require_once $class . '.php';
});
use MyNamespace\NamespaceExample;
$instance = new NamespaceExample();
$instance->sayHello();Traits
// TraitExample.php
trait GreetingTrait {
public function greet() {
echo "Greetings!\n";
}
}
class TraitExample {
use GreetingTrait;
}
$instance = new TraitExample();
$instance->greet();Generators
// GeneratorExample.php
function simpleGenerator() {
yield "First";
yield "Second";
yield "Third";
}
foreach (simpleGenerator() as $value) {
echo $value . "\n";
}2. Object-Oriented Design Patterns
Singleton Pattern
// SingletonExample.php
class SingletonExample {
private static $instance;
private function __construct() {}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
$instance = SingletonExample::getInstance();Factory Method and Abstract Factory Patterns
// FactoryExample.php
interface Product {
public function getName();
}
class ConcreteProduct implements Product {
public function getName() {
return "Concrete Product";
}
}
interface Factory {
public function createProduct(): Product;
}
class ConcreteFactory implements Factory {
public function createProduct(): Product {
return new ConcreteProduct();
}
}
$factory = new ConcreteFactory();
$product = $factory->createProduct();
echo $product->getName() . "\n";Observer Pattern
// ObserverExample.php
interface Observer {
public function update(string $message);
}
class ConcreteObserver implements Observer {
public function update(string $message) {
echo "Received update: $message\n";
}
}
class Subject {
private $observers = [];
public function addObserver(Observer $observer) {
$this->observers[] = $observer;
}
public function notifyObservers(string $message) {
foreach ($this->observers as $observer) {
$observer->update($message);
}
}
}
$observer = new ConcreteObserver();
$subject = new Subject();
$subject->addObserver($observer);
$subject->notifyObservers("Hello observers!");These examples provide a glimpse into the discussed topics. Feel free to explore and modify them to suit your lecture’s needs.


