Please post your solutions to the Apr 7 In-Class Exercise to this thread.
Best, Chris
<pre> '''Autoloader.php''' <?php use some_company\some_project\IntHolder;
spl_autoload_register(function (class) {
// echo "Trying to load class\n";
prefix = "some_company\\some_project";
len = strlen(prefix);
if (strncmp(prefix, class, len) === 0) {
// get the relative class name
relative_class = substr(class, len+1).".php";
// echo relative_class;
if (file_exists(relative_class)) {
require_once(relative_class);
}
}
});
int_holder = new IntHolder(6);
echo int_holder->my_num ."\n";
'''IntHolder.php''' <?php namespace some_company\some_project;
class IntHolder { public $my_num;
function __construct(a_num) {
this->my_num = $a_num;
}
}
</pre>
(Edited: 2021-04-07)IntHolder.php: <pre> <?php namespace some_company\some_project;
class IntHolder {
public my_num;
function _construct(a_num) {
this->my_num = a_num;
}
}
?>
</pre>
TestHolder.php: <pre> <?php use some_company\some_project\IntHolder;
spl_autoload_register(function (class) {
len = strlen("some_company\some_project");
if (strncmp(class, "some_company\\some_project\\", len) !== 0) {
return;
}
rest = substr(class, len);
file_name = "./".rest.".php";
if (file_exists(file_name)) {
require_once $file_name;
}
});
int_holder = new IntHolder(6);
echo int_holder->my_num ."\n";
?>
</pre>
(Edited: 2021-04-07)IntHolder
<?php
namespace some_company\some_project;
class IntHolder{
public my_num;
function __construct(a_num){
this->my_num = a_num;
}
}
AutoLoader
<?php use some_company\some_project\IntHolder;
spl_autoload_register(function ($class) {
$prefix = 'some_company\\some_project\\';
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
return;
}
else{
$relative_class = substr($class, $len);
}
$relative_class = substr($class, $len);
if(file_exists("./".$relative_class.".php")){
require_once "./".$relative_class.".php";
}
});
$int_holder = new IntHolder(6);
echo $int_holder->my_num . "\n"; IntHolder: <?php namespace some_company\some_project;
class IntHolder { public $my_num;
function __construct($a_num) {
$this->my_num = $a_num;
}
}
other.php <?php use some_company\some_project\IntHolder;
spl_autoload_register(function (class) {
prefix = 'some_company\some_project\';
len = strlen(prefix);
if(strncmp(class, 'some_company\\some_project\\', len) !==0)
{
return;
}
// get the relative class name
relative_class = substr(class, len);
if(file_exists("./".relative_class .".php"))
{
require_once "./".$relative_class .".php";
}
});
int_holder = new IntHolder(6);
echo int_holder->my_num ."\n";

namespace some_company\some_project;
class IntHolder{ public $my_num;
function __construct(a_num)
{
this->my_num = a_num;
}
}
use some_company\some_project\IntHolder;
if(file_exists(class.php))
{
spl_autoload_register(function(class))
{
len = strlen('some_company\some_project\');
if(strncmp(class, 'some_company\\some_project\\',len) !== 0)
{
return; //don't know how to autoload file
}
rest_of_string = substr(class, len);
if(file_exists("./".rest_of_string .".php"))
{
require "./".$rest_of_string .".php"
}
} }
echo "Earl";
int_holder = new IntHolder(6);
echo int_holder->my_num ."\n";
IntHolder.php <?php namespace some_company\some_project;
class IntHolder{
public my_num;
public function __construct(a_num){
this->my_num=a_num;
}
}
//
// abc = new IntHolder(5);
// echo abc->my_num;
?>
Autoloader => <?php use some_company\some_project\IntHolder;
spl_autoload_register(function (class_name) {
prefix = 'some_company\some_project\';
len = strlen(prefix);
if(strncmp(class_name, prefix, len)!==0){
return ;
}
rest = substr(class_name, len);
if(file_exists("./".rest.".php")){
require_once "./".rest.".php";
}
require_once "./IntHolder.php";
});
int_holder = new IntHolder(6);
echo int_holder->my_num ."\n";
autoloader.php <?php use some_company\some_project\IntHolder;
spl_autoload_register(function ($class) {
prefix = "some_company\\some_project";
len = strlen(prefix);
if (strncmp(prefix, class, len) === 0) {
// get the relative class name
relative_class = substr(class, len+1).".php";
// echo relative_class;
if (file_exists(relative_class)) {
require_once(relative_class);
}
}
});
int_holder = new IntHolder(6);
echo int_holder->my_num ."\n";
?>
IntHolder.php <?php
namespace some_company\some_project;
class IntHolder{
public $my_num;
function __construct($a_num) {
$this->my_num = $a_num;
}
}
Intholder.php <?php namespace some_company\some_project;
class IntHolder {
public $my_num;
function __construct($intToHold) {
$this->my_num = $intToHold;
}
}
Autoloader.php <?php use some_company\some_project\IntHolder;
spl_autoload_register(
function($class) {
$len = strlen('some_company\\some_project\\');
if (strncmp($class, 'some_company\\some_project\\', $len) !== 0) {
return;
}
$rest_of_string = substr($class, $len);
if (file_exists("./".$rest_of_string .".php")) {
require_once "./".$rest_of_string .".php";
}
});
$int_holder = new IntHolder(6);
echo $int_holder->my_num ."\n";