- strpos: documentation ( source)
- debug_backtrace: documentation ( source)
- count: documentation ( source)
<?php
namespace One
{
class Request
{
public function getResponse()
{
return new Response();
}
}
class Response
{
public function __construct()
{
$debug = debug_backtrace();
if (count($debug) < 2 || !isset($debug[1]['class']) || strpos($debug[1]['class'], __NAMESPACE__ . '\\') !== 0)
{
die('Invalid context');
}
echo 'Created' . PHP_EOL;
}
}
}
namespace Two
{
$request = new \One\Request();
$response = $request->getResponse(); // Should work
$wrongResponse = new \One\Response(); // Should NOT work
}