YanoRyuichi.com/
Wiki
Blog
GitHub
Sandbox
開始行:
* クラスのオートロード [#l85cfdd6]
** オートロードを利用しない場合 [#ca5487a6]
<?php
include_once('Foo.php')
$foo = new Foo();
- 以上のようにnew Fooする前にFooクラスを定義したファイル...
** __autoload()を使ってクラスをオートロードする [#m0eee348]
<?php
function __autoload($name) {
$file = "${name}.php";
if (is_readable($file)) {
include_once($file);
}
}
$foo = new Foo();
$bar = new Bar();
$baz = new Baz();
- __autoload()関数を定義して、任意のクラスを定義したファ...
- これによってnew Foo()すればFoo.phpが、new Bar()すればBa...
- ただし、この機能はdeprecateで非推奨になっているので、も...
** spl_autoload_register()を使ってクラスをオートロードす...
<?php
function load($name) {
echo "load($name) was called\n";
if (is_readable("lib/$name.php")) {
include_once("lib/$name.php");
}
}
class Bar {
static function load($name) {
echo "Bar::load($name) was called\n";
if (is_readable("$name.php")) {
include_once("$name.php");
}
}
}
class Baz {
static function load($name) {
echo "Baz::load($name) was called\n";
if (is_readable("ext/$name.php")) {
include_once("ext/$name.php");
}
}
}
spl_autoload_register('load');
spl_autoload_register('Bar::load');
$baz = new Baz();
spl_autoload_register([$baz, 'load']);
$foo = new Foo();
- spl_autoload_register()にクラスをロードするためのロード...
- __autoload()と違い、ロード用関数を複数指定することがで...
- ただし、一度Fooクラスが見つかると、残りのロード用関数は...
- また、spl_autoload_register()を使うと、__autoload()関数...
- よって、必要ならspl_autoload_register('__autoload')とし...
** 参考 [#n95c5765]
- http://php.net/manual/ja/language.oop5.autoload.php
終了行:
* クラスのオートロード [#l85cfdd6]
** オートロードを利用しない場合 [#ca5487a6]
<?php
include_once('Foo.php')
$foo = new Foo();
- 以上のようにnew Fooする前にFooクラスを定義したファイル...
** __autoload()を使ってクラスをオートロードする [#m0eee348]
<?php
function __autoload($name) {
$file = "${name}.php";
if (is_readable($file)) {
include_once($file);
}
}
$foo = new Foo();
$bar = new Bar();
$baz = new Baz();
- __autoload()関数を定義して、任意のクラスを定義したファ...
- これによってnew Foo()すればFoo.phpが、new Bar()すればBa...
- ただし、この機能はdeprecateで非推奨になっているので、も...
** spl_autoload_register()を使ってクラスをオートロードす...
<?php
function load($name) {
echo "load($name) was called\n";
if (is_readable("lib/$name.php")) {
include_once("lib/$name.php");
}
}
class Bar {
static function load($name) {
echo "Bar::load($name) was called\n";
if (is_readable("$name.php")) {
include_once("$name.php");
}
}
}
class Baz {
static function load($name) {
echo "Baz::load($name) was called\n";
if (is_readable("ext/$name.php")) {
include_once("ext/$name.php");
}
}
}
spl_autoload_register('load');
spl_autoload_register('Bar::load');
$baz = new Baz();
spl_autoload_register([$baz, 'load']);
$foo = new Foo();
- spl_autoload_register()にクラスをロードするためのロード...
- __autoload()と違い、ロード用関数を複数指定することがで...
- ただし、一度Fooクラスが見つかると、残りのロード用関数は...
- また、spl_autoload_register()を使うと、__autoload()関数...
- よって、必要ならspl_autoload_register('__autoload')とし...
** 参考 [#n95c5765]
- http://php.net/manual/ja/language.oop5.autoload.php
ページ名: