If spl_autoload_register() had been called, then function will try autoload class if it does not exists.
Use instead
<?php
in_array($class_name, get_declared_classes());
?>
class_exists
(PHP 4, PHP 5)
class_exists — Sınıf tanımlı mı diye bakar
Açıklama
bool class_exists
( string $sınıf
[, bool $özdevinimli_yükle = true
] )
Bu işlev belirtilen sınıfın tanımlı olup olmadığına bakar.
Değiştirgeler
- sınıf
-
Sınıf ismi. İsim eşleştirilirken harf büyüklüğü dikkate alınmaz.
- özdevinimli_yükle
-
Öntanımlı olarak __autoload çağrısı yapılıp yapılmayacağı. TRUE öntanımlıdır.
Dönen Değerler
sınıf tanımlı bir sınıfın ismi ise TRUE, aksi takdirde FALSE döner.
Sürüm Bilgisi
| Sürüm: | Açıklama |
|---|---|
| 5.0.2 | Tanımlı arayüzler için artık TRUE dönmüyor. Arayüzler için interface_exists() işlevini kullanın. |
| 5.0.0 | özdevinimli_yükle değiştirgesi eklendi. |
Örnekler
Örnek 1 class_exists() example
<?php
// Check that the class exists before trying to use it
if (class_exists('MyClass')) {
$myclass = new MyClass();
}
?>
Örnek 2 autoload parameter example
<?php
function __autoload($class)
{
include($class . '.php');
// Check to see whether the include declared the class
if (!class_exists($class, false)) {
trigger_error("Unable to load class: $class", E_USER_WARNING);
}
}
if (class_exists('MyClass')) {
$myclass = new MyClass();
}
?>
Ayrıca Bakınız
- function_exists() - Eğer işlev tanımlanmış ise TRUE döndürür
- interface_exists() - Arayüz tanımlı mı diye bakar
- get_declared_classes() - Tanımlı sınıfların isimlerini bir dizi olarak döndürür
class_exists
azrael dot com at gmail dot com
12-Dec-2008 12:14
12-Dec-2008 12:14
Anonymous
29-Nov-2008 06:27
29-Nov-2008 06:27
If you planned to use utf-8 in classes or variables names, remember that locale has to be properly set firstly, e.g.
<?php
locale (LC_ALL, 'ru_RU.UTF-8');
?>
or it turn into errors.
Radek @ cz
06-May-2008 01:43
06-May-2008 01:43
If you want to combat many class includes effectively, define your own autoloader function and spl_autoload_register() that autoloader.
richard at richard-sumilang dot com
27-Mar-2008 08:56
27-Mar-2008 08:56
[ >= PHP 5.3]
If you are checking if a class exists that is in a specific namespace then you have to pass in the full path to the class:
echo (class_exists("com::richardsumilang::common::MyClass")) ? "Yes" : "No";
Frayja
01-Jun-2006 08:42
01-Jun-2006 08:42
Like someone else pointed out class_exists() is case-INsensitive.
Using in_array() which is case-sensitive, the following function is a case-sensitive version of class_exists().
<?php
function class_exists_sensitive( $classname )
{
return ( class_exists( $classname ) && in_array( $classname, get_declared_classes() ) );
}
?>
06-Apr-2004 12:04
Just a note that at least PHP 4.3.1 seems to crash under some situations if you call class_exists($foo) where $foo is an array (that is, the calling code is incorrect but the error recovery is far from perfect).
anonymous at somewhere dot tld
17-Jul-2003 07:20
17-Jul-2003 07:20
If you have a directory of classes you want to create. (Modules in my instance)... you can do it like that
<?php
if (is_dir($this->MODULE_PATH) && $dh = opendir($this->MODULE_PATH)) {
while (($file = readdir($dh)) !== false) {
if (preg_match("/(Mod[a-zA-Z0-9]+).php/", $file, $matches)>0) {
// include and create the class
require_once($this->MODULE_PATH."/".$file);
$modules[] = new $matches[1]();
}
}
} else {
exit;
}
?>
//---
Here the rule is that all modules are on the form
ModModulename.php and that the class has the same name as the file.
The $modules array has all the classes initialized after this code
