精华内容
下载资源
问答
  • 本文总结了PHP 预定义变量、魔术常量和魔术方法。分享给大家供大家参考,具体如下: PHP 预定义了一些变量、常量、方法,使用起来很方便,例如直接使用 __DIR__ 获取当前文件所在的目录。 下面分别详细介绍一下 ...
  • 魔术常量

    2018-02-05 18:05:35
    ...不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经...有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中

    转载自:http://php.net/manual/zh/language.constants.predefined.php

    PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

    有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:

    几个 PHP 的“魔术常量”
    名称 说明
    __LINE__文件中的当前行号。
    __FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
    __DIR__文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
    __FUNCTION__函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
    __CLASS__类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
    __TRAIT__Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
    __METHOD__类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
    __NAMESPACE__当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

    参见 get_class()get_object_vars()file_exists() 和 function_exists()

    add a note add a note

    User Contributed Notes 9 notes

    up
    180
    vijaykoul_007 at rediffmail dot com  ¶
    12 years ago
    the difference between 
    __FUNCTION__ and __METHOD__ as in PHP 5.0.4 is that

    __FUNCTION__ returns only the name of the function

    while as __METHOD__ returns the name of the class alongwith the name of the function

    class trick
    {
          function doit()
          {
                    echo __FUNCTION__;
          }
          function doitagain()
          {
                    echo __METHOD__;
          }
    }
    $obj=new trick();
    $obj->doit();
    output will be ----  doit
    $obj->doitagain();
    output will be ----- trick::doitagain
    up
    12
    Sbastien Fauvel  ¶
    1 year ago
    Note a small inconsistency when using __CLASS__ and __METHOD__ in traits (stand php 7.0.4): While __CLASS__ is working as advertized and returns dynamically the name of the class the trait is being used in, __METHOD__ will actually prepend the trait name instead of the class name!
    up
    7
    php at kenman dot net  ¶
    3 years ago
    Just learned an interesting tidbit regarding __FILE__ and the newer __DIR__ with respect to code run from a network share: the constants will return the *share* path when executed from the context of the share.

    Examples:

    // normal context
    // called as "php -f c:\test.php"
    __DIR__ === 'c:\';
    __FILE__ === 'c:\test.php';

    // network share context
    // called as "php -f \\computerName\c$\test.php"
    __DIR__ === '\\computerName\c$';
    __FILE__ === '\\computerName\c$\test.php';

    NOTE: realpath('.') always seems to return an actual filesystem path regardless of the execution context.
    up
    14
    Tomek Perlak [tomekperlak at tlen pl]  ¶
    11 years ago
    The __CLASS__ magic constant nicely complements the get_class() function.

    Sometimes you need to know both:
    - name of the inherited class
    - name of the class actually executed

    Here's an example that shows the possible solution:

    <?php

    class base_class
    {
        function 
    say_a()
        {
            echo 
    "'a' - said the " __CLASS__ "<br/>";
        }

        function 
    say_b()
        {
            echo 
    "'b' - said the " get_class($this) . "<br/>";
        }

    }

    class 
    derived_class extends base_class
    {
        function 
    say_a()
        {
            
    parent::say_a();
            echo 
    "'a' - said the " __CLASS__ "<br/>";
        }

        function 
    say_b()
        {
            
    parent::say_b();
            echo 
    "'b' - said the " get_class($this) . "<br/>";
        }
    }

    $obj_b = new derived_class();

    $obj_b->say_a();
    echo 
    "<br/>";
    $obj_b->say_b();

    ?>

    The output should look roughly like this:

    'a' - said the base_class
    'a' - said the derived_class

    'b' - said the derived_class
    'b' - said the derived_class
    up
    6
    meindertjan at gmail dot spamspamspam dot com  ¶
    3 years ago
    A lot of notes here concern defining the __DIR__ magic constant for PHP versions not supporting the feature. Of course you can define this magic constant for PHP versions not yet having this constant, but it will defeat its purpose as soon as you are using the constant in an included file, which may be in a different directory then the file defining the __DIR__ constant. As such, the constant has lost its *magic*, and would be rather useless unless you assure yourself to have all of your includes in the same directory.

    Concluding: eye catchup at gmail dot com's note regarding whether you can or cannot define magic constants is valid, but stating that defining __DIR__ is not useless, is not!
    up
    5
    chris dot kistner at gmail dot com  ¶
    6 years ago
    There is no way to implement a backwards compatible __DIR__ in versions prior to 5.3.0.

    The only thing that you can do is to perform a recursive search and replace to dirname(__FILE__):
    find . -type f -print0 | xargs -0 sed -i 's/__DIR__/dirname(__FILE__)/'
    up
    1
    Anonymous  ¶
    6 years ago
    Further clarification on the __TRAIT__ magic constant.

    <?php
    trait PeanutButter {
        function 
    traitName() {echo __TRAIT__;}
    }

    trait 
    PeanutButterAndJelly {
        use 
    PeanutButter;
    }

    class 
    Test {
        use 
    PeanutButterAndJelly;
    }

    (new 
    Test)->traitName(); //PeanutButter
    ?>
    up
    1
    david at thegallagher dot net  ¶
    5 years ago
    You cannot check if a magic constant is defined. This means there is no point in checking if __DIR__ is defined then defining it. `defined('__DIR__')` always returns false. Defining __DIR__ will silently fail in PHP 5.3+. This could cause compatibility issues if your script includes other scripts. 

    Here is proof: 

    <?php 
    echo (defined('__DIR__') ? '__DIR__ is defined' '__DIR__ is NOT defined' PHP_EOL); 
    echo (
    defined('__FILE__') ? '__FILE__ is defined' '__FILE__ is NOT defined' PHP_EOL); 
    echo (
    defined('PHP_VERSION') ? 'PHP_VERSION is defined' 'PHP_VERSION is NOT defined') . PHP_EOL
    echo 
    'PHP Version: ' PHP_VERSION PHP_EOL
    ?> 

    Output: 
    __DIR__ is NOT defined 
    __FILE__ is NOT defined 
    PHP_VERSION is defined 
    PHP Version: 5.3.6
    up
    -5
    madboyka at yahoo dot com  ¶
    7 years ago
    Since namespace were introduced, it would be nice to have a magic constant or function (like get_class()) which would return the class name without the namespaces.

    On windows I used basename(__CLASS__). (LOL)
    展开全文
  • 魔术常量是不分大小写的,\_\_LINE\_\_和\_\_line\_\_是一样的,但对于工程化的开发来说,常量还是尽量以大写为主。 \_\_LINE\_\_ 文件中的当前行号。 echo __LINE__ . PHP_EOL; // 3 function testLine() { echo...
  • 魔术常量:1。__LINE__返回文件中的当前行号。2。__FILE__ 返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2 起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个...
  • 有八个魔术常量它们的值随着它们在代码中的位置改变而改变,我们接下来具体看下。 首先是__LINE__,它表示文件中的当前行号,实例如下: <?php echo '这是第 " ' . __LINE__ . ' " 行'; ?> 第二个就是__FILE...
  • 魔术常量: namespace ns1; class Test { function __construct() { var_dump(__LINE__); var_dump(__FILE__); var_dump(__DIR__); var_dump(__FUNCTION__); var_dump(__CLASS__); var_dump(__METHOD__); ...
  • 有八个魔术常量它们的值随着它们在代码中的位置改变而改变。 例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下: __LINE__ 文件中的当前行号。 <?php echo '这是第 " ' ....
  • PHP中类型转换 ,常量,系统常量,魔术常量的详解 1.自动类型转换; 在运算和判断时,会进行自动类型转换; 1)其他类型转为bool,判断时转换; 1)整型转布尔型:0转false,非0转为true; 2) 空字符串和‘0'(“0”)...
  • 有七个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下: 名称 说明 __LINE__ 文件中的当前行号。 __FILE__ 文件...
  • 近段时间发现自己,php仅仅停留在会的层面,感觉现在的自己应该向,熟悉和精通的方向努力,这样... 魔术常量 8个 概念:所谓的魔术常量就是php预定义的一些常量,这些常量会随着所在位置的而变化。 _ _ LINE _ _ ...

    近段时间发现自己,php仅仅停留在会的层面,感觉现在的自己应该向,熟悉和精通的方向努力,这样才能更好的让php成为自己手中的一把利剑。

    以后自己每写一篇博客,写一句名言开头:

             操千曲而后晓声,观千剑而后识器;      ———— 刘勰

    • 魔术常量 8个

     概念:所谓的魔术常量就是php预定义的一些常量,这些常量会随着所在位置的而变化。

    1.  _ _ LINE _ _   文件中的当前行号
    2. _ _ FILE _ _     文件的完整路径和文件名。如果用在被包含文件中,则返回包含的文件名。
    3. _ _ DIR _ _        文件所在的目录,如果用在被包含文件中,则返回被包括的文件名
    4. _ _ FUNCTION _ _   返回函数名 (区分大小写)
    5. _ _ CLASS _ _         返回类名称  (区分大小写) 当用在trait方法中,__CLASS__是调用trait方法的类名
    6. _ _ TRAIT _ _     Trait 名字(php 5.4新加) 
    7. _ _ METHOD _ _   类的方法名
    8. _ _ NAMESPACE _ _   当前命名空间的名称           

    魔术方法   15个

    __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString()__invoke(), __set_state(), __clone() 和 __debugInfo() 等方法在 PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。

    PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。

     1 、__construct()    构造函数

    PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

    Note: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。

          2、 __destruct ( void )    析构函数

    PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

    和构造函数一样,父类的析构函数不会被引擎暗中调用。要执行父类的析构函数,必须在子类的析构函数体中显式调用 parent::__destruct()。此外也和构造函数一样,子类如果自己没有定义析构函数则会继承父类的。

    析构函数即使在使用 exit() 终止脚本运行时也会被调用。在析构函数中调用 exit() 将会中止其余关闭操作的运行。

    析构函数在脚本关闭时调用,此时所有的 HTTP 头信息已经发出。脚本关闭时的工作目录有可能和在 SAPI(如 apache)中时不同。

    <?php
    class MyDestructableClass {
       function __construct() {
           print "In constructor\n";
           $this->name = "MyDestructableClass";
       }
    
       function __destruct() {
           print "Destroying " . $this->name . "\n";
       }
    }
    
    $obj = new MyDestructableClass();
    
    //输出的结果是: 说明是先到构造函数中,后到析构函数中
    // In constructor    
    // Destroying  MyDestructableClass      
    ?>

    3. 重载

    PHP所提供的重载(overloading)是指动态地创建类属性和方法。我们是通过魔术方法(magic methods)来实现的。

    当调用当前环境下未定义或不可见(是指private,protect)的类属性或方法时,重载方法会被调用

    所有的重载方法都必须被声明为 public

    Note: 这些魔术方法的参数都不能通过引用传递, 可以理解为在调用时不用我们手动传参。

    这些方法在类中不声明是不会被默认调用的:

     属性重载

         public __set ( string $name , mixed $value ) : void

         public __get ( string $name ) : mixed

         public __isset ( string $name ) : bool

         public __unset ( string $name ) : void

    在给不可访问属性赋值时 ,__set() 会被调用。

    读取不可访问属性的值时 ,__get() 会被调用。

    当对不可访问属性调用 isset() 或 empty() 时, __isset() 会被调用。 

    当对不可访问属性调用 unset() 时, __unset() 会被调用。

    参数 $name 是指要操作的变量名称。__set() 方法的 $value 参数指定了 $name 变量的值。

    属性重载只能在对象中进行。在静态方法中,这些魔术方法将不会被调用。所以这些方法都不能被 声明为 static。从 PHP 5.3.0 起, 将这些魔术方法定义为 static 会产生一个警告。

    class PropertyTest {
         /**  被重载的数据保存在此  */
        private $data = array();
    
     
         /**  重载不能被用在已经定义的属性  */
        public $declared = 1;
    
         /**  只有从类外部访问这个属性时,重载才会发生 */
        private $hidden = 2;
    
        public function __set($name, $value) 
        {
            echo "Setting '$name' to '$value'\n";
            $this->data[$name] = $value;
        }
    
        public function __get($name) 
        {
            echo "Getting '$name'\n";
            if (array_key_exists($name, $this->data)) {
                return $this->data[$name];
            }
    
            $trace = debug_backtrace();
            trigger_error(
                'Undefined property via __get(): ' . $name .
                ' in ' . $trace[0]['file'] .
                ' on line ' . $trace[0]['line'],
                E_USER_NOTICE);
            return null;
        }
    
        /**  PHP 5.1.0之后版本 */
        public function __isset($name) 
        {
            echo "Is '$name' set?\n";
            return isset($this->data[$name]);
        }
    
        /**  PHP 5.1.0之后版本 */
        public function __unset($name) 
        {
            echo "Unsetting '$name'\n";
            unset($this->data[$name]);
        }
    
        /**  非魔术方法  */
        public function getHidden() 
        {
            return $this->hidden;
        }
    }
    
    
    echo "<pre>\n";
    
    $obj = new PropertyTest;
    
    $obj->a = 1;
    echo $obj->a . "\n\n";
    
    var_dump(isset($obj->a));
    unset($obj->a);
    var_dump(isset($obj->a));
    echo "\n";
    
    echo $obj->declared . "\n\n";
    
    echo "Let's experiment with the private property named 'hidden':\n";
    echo "Privates are visible inside the class, so __get() not used...\n";
    echo $obj->getHidden() . "\n";
    echo "Privates not visible outside of class, so __get() is used...\n";
    echo $obj->hidden . "\n";
    
    
    
    //输出的结果
    
    
    Setting 'a' to '1'
    Getting 'a'
    1
    
    Is 'a' set?
    bool(true)
    Unsetting 'a'
    Is 'a' set?
    bool(false)
    
    1
    
    Let's experiment with the private property named 'hidden':
    Privates are visible inside the class, so __get() not used...
    2
    Privates not visible outside of class, so __get() is used...
    Getting 'hidden'
    
    

     方法重载

    public __call ( string $name , array $arguments ) : mixed

    public static __callStatic ( string $name , array $arguments ) : mixed

    在对象中调用一个不可访问方法时,__call() 会被调用。

    在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。

    class MethodTest 
    {
        public function __call($name, $arguments) 
        {
            // 注意: $name 的值区分大小写
            echo "Calling object method '$name' "
                 . implode(', ', $arguments). "\n";
        }
    
        /**  PHP 5.3.0之后版本  */
        public static function __callStatic($name, $arguments) 
        {
            // 注意: $name 的值区分大小写
            echo "Calling static method '$name' "
                 . implode(', ', $arguments). "\n";
        }
    }
    
    $obj = new MethodTest;
    $obj->runTest('in object context');
    
    MethodTest::runTest('in static context');  // PHP 5.3.0之后版本
    
    //输出的结果
    Calling object method 'runTest' in object context
    Calling static method 'runTest' in static context

     4  __sleep() 和 __wakeup()   这里面的序列化目前我看到不太明白

     serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

    __sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。

    与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。

    __wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作

    5  __toString()

    __toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条E_RECOVERABLE_ERROR 级别的致命错误。

    6  __invoke()

      当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

    class CallableClass 
    {
        function __invoke($x) {
            var_dump($x);
        }
    }
    $obj = new CallableClass;
    $obj(5);
    var_dump(is_callable($obj));
    
    //is_callable() 函数用于检测函数在当前环境中是否可调用。
    
    //输出
    int(5)
    bool(true)

     7 __set_state()

    自 PHP 5.1.0 起当调用 var_export() 导出类时,此静态 方法会被调用。

    本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。

     8  __debugInfo()

      当调用var_dump()时,__debugInfo()方法会被调用。

    __clone   

    在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个 GTK 窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象 A 中保存着对象 B 的引用,当你复制对象 A 时,你想其中使用的对象不再是对象 B 而是 B 的一个副本,那么你必须得到对象 A 的一个副本。

    当复制完成时,如果定义了 __clone() 方法,则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,可用于修改属性的值(如果有必要的话)。

    • 超全局变量(9个)

    1、$GLOBALS  :储存全局作用域中的变量
    2、$_SERVER  :获取服务器相关信息
    3、$_REQUEST :获取POST和GET请求的参数
    4、$_POST : 获取表单的POST请求参数
    5、$_GET: 获取表单的GET请求参数
    6、$_FILES :获取上传文件的的变量
    7、$_ENV : 获取服务器端环境变量的数组
    8、$_COOKIE:获取浏览器的cookie

    浏览器cookie的操作
    设置cookie:setcookie(name, value, expire, path, domain);
    获取cookie:$_COOKIE[“user”];
    删除cookie:setcookie(“user”, “”, time()-3600);//设置过期时间
    $_SESSION : 获取session
    服务端session的操作
    使用session前一定要session_start()启动session
    储存session:$_SESSION[‘name’]=”leixuesong”;//数组操作
    销毁session:unset($_SESSION[‘views’]);//销毁一个
    session_destroy()和unset($_SESSION);//销毁所有的session

     

    展开全文
  • __METHOD__ 是PHP5之后新增的魔术常量,表示的是类文法的名称。魔术常量是一种PHP预定义常量,它的值可以是变化的,PHP中的其它已经存在的魔术常量有__LINE__、__FILE__、__FUNCTION__、__CLASS__等。 下面就用一小...
  • PHP魔术常量

    2018-06-09 23:34:39
    PHP中有八个魔术常量,它们的值随着它们在代码中位置的改变而变化。这些特殊的常量不区分大小写。
            PHP中有八个魔术常量,它们不是真正的常量,它们的值会随着它们在代码中位置的改变而变化。这些特殊的常量不区分大小写。
    
            __LINE__:文件中的当前行号。
            __FILE__:文件的完整路径和文件名。如果是在被包含的文件中使用,返回的是被包含的文件的路径,从PHP4.2起,__FILE__总是包含绝对路径,如果是符号链接,返回的是解析后的绝对路径。
            __DIR__:PHP5.3新增,文件所在的目录。如果是在被包含的文件中使用,返回的是被包含的文件的目录。等价于dirname(__FILE__),除非是根目录,否则返回的目录不末尾不带斜杠。
            __FUNCTION__:PHP4.3新增,函数名称。PHP4中返回的函数名是小写的,自PHP5起,返回的是函数定义时的名称。
            __CLASS__:PHP4.3新增,类的名称。PHP4中返回的类名是小写的,自PHP5起,返回的是类定义时的名称。PHP5.4起,__CLASS__对trait也起作用,当在trait中使用时,__CLASS__返回的是调用trait方法的类的名字。
            __TRAIT__:PHP5.4新增,返回trait被定义时的名字,包括其被声明的作用域。
            __METHOD__:PHP5.0新增,返回类的方法被定义时的名字。
            __NAMESPACE__:PHP5.3新增,返回当前命名空间的名称,在编译时定义。
    <?PHP  
    namespace MyProject;
    header("content-type:text/html;charset=utf-8");  
    echo "命名空间名为:".__NAMESPACE__."\n";  
    echo "这是第 ". __LINE__ ."行\n";  
    echo "该文件位于 ". __DIR__ ."文件夹下\n";  
    echo "文件名为:". __FILE__ ."\n";  
    
    trait traitTest{
    	function Test(){
    		echo "trait名称为".__TRAIT__."\n";
    	}
    }
    
    class test {
    	use traitTest;
        function show() {  
            echo "该类名为:". __CLASS__ ."\n";  
            echo "该函数名为:". __FUNCTION__."\n" ;  
            echo "该函数方法名为:".__METHOD__."\n";  
        }  
    }
    
    $t = new test();  
    $t->show();  
    $t->Test();
    ?> 

    展开全文
  • php 魔术常量详解 实例: class MoShu{ public function moshu() { echo '当前类名:' . __CLASS__ . ; echo '当前方法名:' . __FUNCTION__ . ; echo '当前文件中所在的行数:' . __LINE__ . ; ...
  • 常见的魔术常量

    2020-09-04 21:41:42
    1、 __ LINE __:返回文件中的当前行号 2、 __ FILE __:返回文件的完整路径和文件名 3、 __ DIR __:返回文件中的目录 4、 __ FUNCTION __:返回函数名称 5、 __ CLASS __:返回类的名称 6、 __ METHOD __:返回类...

    1、 __ LINE __:返回文件中的当前行号
    2、 __ FILE __:返回文件的完整路径和文件名
    3、 __ DIR __:返回文件中的目录
    4、 __ FUNCTION __:返回函数名称
    5、 __ CLASS __:返回类的名称
    6、 __ METHOD __:返回类的方法名
    7、 __ NAMESPACE __:返回当前命名空间的名称

    展开全文
  • PHP 魔术常量

    2019-08-12 18:27:15
    有八个魔术常量它们的值随着它们在代码中的位置改变而改变。 例如 __LINE__的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下: 1、 __LINE__ //文件中的当前行号 <?p...
  • 有八个魔术常量它们的值随着它们在代码中的位置改变而改变,我们接下来具体看下。 首先是__LINE__,它表示文件中的当前行号,实例如下: &lt;?php echo '这是第 " ' . __LINE__ . ' " 行'; ...
  • 魔术方法 1、__init__: 通过此方法我们可以定义一个对象的初始操作
  • 魔术方法: __sleep serialize之前被调用,若对象比较大,想做一些删除在序列化,可以考虑使用该方法; __wakeup unserialize之前被调用,做些对象的初始化; __toString 打印一个对象时被调用,比如echo obj,print...
  • PHP中的那些魔术常量

    2019-05-28 11:26:15
    之前我们已经了解了一些常用的魔术方法,除了魔术方法外,PHP还提供一些魔术常量,相信大家在日常的工作中也都...魔术常量是不分大小写的,__LINE__和__line__是一样的,但对于工程化的开发来说,常量还是尽量以大写...
  • PHP 中所有魔术常量

    2019-10-17 02:29:18
    __LINE__ //文件中的当前行号。 __FILE__ //获取当前文件的绝对路径,包含文件名。 __DIR__ //获取当前文件的目录名,除非是根目录,否则目录中名不包括末尾的斜杠。 __FUNCTION__ //获取当前函数被定义时的名称...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,527
精华内容 3,810
关键字:

魔术常量