实际应用中需要考虑更复杂的情况...我只是给一个思路,看代码吧..
getclassname.php
<?php
$file_info=file('class.php');
foreach ($file_info as $value)
{
$value=rtrim($value);
if (preg_match("/^class[\s]+[a-z]+[a-z0-9_]*/Uis",$value))
{
echo $value.'<br />';
}
}
?>
我用来测试的类
<?php
/****************WelCome To use*****************************
*Document Description:测试
*Author:SurfChen                       
*Contact:[email protected]          
*Support:http://www.yubeinet.com        
*Copyright,YuBeiNetWork.All Rights Reserved 
*Powered By PHP:Hypertext Preprocessor && MySql
*===========================================================*/
class PhpClassicalClass()
{
function Construct()
{
$this->PHPer='surfchen';
}
}
?>

解决方案 »

  1.   

    to 楼上:
    你这是读取静态class文件分析获取class名称,并非运行时根据对象获取其类名。
    如果用你这种方法,那我要去分析所有class源文件,把所有类名保存到集合,然后用get_class(obj)获取对象运行时的类名,再和上面类名集合中的每个类名的小写形式一一比较!个人感觉不妥欢迎大家提出更好的解决办法!
      

  2.   

    你可以将所有已定义的类用一个数组保存下来做为全局变量
    $DECLARED_CLASS = array( "PHPclass1", "TestClass", "AnotherCLASS");然后在判断时可以写个函数
    function get_class_exactly( $obj )

        global $DECLARED_CLASS;
        $cn = get_class( $obj );    foreach( $DECLARED_CLASS as $v )
        { 
            if ( $cn == strtolower( $v ) )
            {
               return $v;
            }
        }
        retrun null;
    }
      

  3.   

    这两天太忙了,没有来看帖,对不起大家了!to 唠叨:
    是这样的,我想写一个通用的web service服务器,因为java客户端发出的请求xml中经常是封装的一些对象,因为java的类名大小写敏感,而php不敏感,因此我无法将java封装的对象同php中的类对应起来。to ice_berg16(寻梦的稻草人):
    我要的是通用的方法,你这种方法和surfchen(冲浪)的方法本质上是一样的,是我想到过的,无法满足做一个通用的web service服务器的要求
      

  4.   

    get_class
    (PHP 4 )get_class -- 返回对象的类名
    描述
    string get_class ( object obj)
    返回对象实例 obj 所属类的名字。如果 obj 不是一个对象则返回 FALSE。 注: get_class() 返回用户定义的类名的小写形式。在 PHP 扩展中定义的类则返回其原有的名字
      

  5.   

    有点不明白
    我想写一个通用的web service服务器”用php写?如果不是,那与php有什么关系呢?
    “因为java客户端发出的请求xml中经常是封装的一些对象”什么对象?java?那么该用java处理吧?用php模拟?
    php可加载java驱动模块,此时php只是充当通信员。所谓类名大小写敏感与敏感并不是问题
      

  6.   

    <?
    GLOBALS $Class_Name_array;
    $Class_Name_array=array();Class BaseClass{
     get_class_name(){
    GLOBALS $Class_Name_array;
      $Class_Name_array__CLASS__
     }
    }
    ?>
      

  7.   

    我的php 5.0.3,apache 2中,get_class返回的类名已经和原类名大小写一样
      

  8.   

    <?$Class_Name_array=array();Class BaseClass{
     get_class_name(){
     GLOBALS $Class_Name_array;
      $Class_Name_array[]=__CLASS__;
     }
    }
    ?>所有类都继承与这个基类,然后在没有类的构造器里面调用这个get_class_name()方法!
      

  9.   

    忘了在get_class_name()在前面function......;<
      

  10.   

    to dnomaid(DO) :
    php5中是这样吗?和apache版本应该没有关系。如果php5真这样,倒是可以试一试。谢谢了!to 唠叨:
    对,是用php做web service服务器,主要是利用apache做http服务器,用php来实现soap协议和wsdl标准的解析。这里和加载java模块没有关系,这是web service,是不同域名下不同应用程序之间的通信。to 西北狼:
    你这样限制了类的书写,没有通用性