首页 > 编程知识 正文

php魔术变量,php 变量

时间:2024-03-07 18:23:35 阅读:332094 作者:CJKA

本文目录一览:

stat failed for 怎么回事

你的错误都是由于第一个错误引起的,所以后面可以先忽略。

这个错误产生的原因就是你的PHP找不到mode.htm这个文件的位置,你可以为该文件增加路径描述解决这个问题。

当前的文件在PHP中可以用魔术变量__FILE__表示,因此,你的当前目录为dirname(__FILE__)

怎么样在php配置中加载魔术常量

PHP中,有不少很好用的魔术变量,用好之,能事半功倍,下面小结之: 

1 _LINE_ 

  显示当前代码的行数: 

  echo "This is line number : ". __LINE__; 

2 _FILE_ 

   显示当前文件的路径 

3 _METHOD_ 

   显示当前方法的名,比如 

   class Magicconstant 

    function __construct() 

    { 

      echo "This is function a"; 

    } 

    function b() 

   {

     echo "br/"; 

     echo "This is function b"; 

     echo "br/"; 

     echo __METHOD__; 

   } 

$cm = new Magicconstant(); 

$cm-b(); 

显示 

   This is function a 

  This is function b 

  Magicconstant::b 

4 _FUNCTION_ 

   显示当前所在函数的名 

  function b() 

  { 

  echo "br/"; 

echo "This is function b"; 

echo "br/"; 

echo __FUNCTION__; 

  } 

输出: 

   This is function b 

Magicconstant::b 

5 _DIR_ 

   显示当前目录名,如 

  echo "The directory name is : ". __DIR__; 

输出: 

  The directory name is : D:wampwww 

6 _CLASS_ 

   显示当前的类 

class Magicconstant 

function __construct() 

echo "The class name is : ".__CLASS__; 

$cm = new Magicconstant(); 

  显示: 

  The class name is : Magicconstant 

7 _NAMESPACE_ 

   显示当前命名空间 

namespace MagicConstant 

   echo "The namespace is : ".__NAMESPACE__; 

输出: 

  The namespace is : MagicConstant 

8 _sleep_ 

  _sleep_用在将类序列化之前, 

?php 

class User 

public $userName = ''; 

public $userAddress = ''; 

public $userPhone = ''; 

public function setName($name='') 

$this-userName = $name; 

function setAddress($address='') 

$this-userAddress = $address; 

function setPhone($phone='') 

$this-userPhone = $phone; 

function __sleep() 

return array('userAddress','userPhone'); 

                        // This will serialize only address and Phone number but not Name 

?php 

$User = new User(); 

$User-setName('Avinash'); 

$User-setAddress('Address Here'); 

$User-setPhone('1234567890'); 

$serialData = serialize($User); 

echo $serialData; 

OutPut: O:4:"User":2:{s:11:"userAddress";s:12:"Address Here";s:9:"userPhone";s:10:"1234567890";} 

程序运行时, serialize() 检查类中是否有 __sleep() ,如果有,则该函数将在任何序列化之前运行. 该函数必须返回一个需要进行序列化保存的成员属性数组,并且只序列化该函数返回的这些成员属性. 该函数有两个作用: 第一. 在序列化之前,关闭对象可能具有的任何数据库连接等. 第二. 指定对象中需要被序列化的成员属性,如果某个属性比较大而不需要储存下来,可以不把它写进__sleep()要返回的数组中,这样该属性就不会被序列化 

又如: 

class Test { 

public $mySecret; //我的秘密不想让人知道 

public function __construct($secret) { 

$this-mySecret = $secret; 

public function __sleep() { 

$this-mySecret = "你休想知道我的秘密!"; 

return array('mySecret'); //一定要返回变量,不然返回的是个空,所以序列化也就没有东西了。 

$test = new Test("我的心里话 我爱某某某"); 

echo serialize($test); //输出 O:4:"Test":1:{s:8:"mySecret";s:28:"你休想知道我的秘密!";} 

_wakeup_ 

用在反序列化时: 

?php 

class User 

public $userName = ''; 

public $userAddress = ''; 

public $userPhone = ''; 

public function setName($name='') 

$this-userName = $name; 

function setAddress($address='') 

$this-userAddress = $address; 

function setPhone($phone='') 

$this-userPhone = $phone; 

function __sleep() 

return array('userAddress','userPhone'); 

                       // This will serialize only address and Phone number but not Name 

function __wakeup() 

echo "In Wakeup function"."br/"; 

?php 

$User = new User(); 

$User-setName('Avinash'); 

$User-setAddress('Address Here'); 

$User-setPhone('1234567890'); 

$serialData = serialize($User); 

echo $serialData; 

echo "br/"; 

var_dump(unserialize($serialData)); 

Output: 

In Wakeup function 

object(User)#2 (3) { 

  ["userName"]= 

  string(0) "" 

  ["userAddress"]= 

  string(12) "Address Here" 

  ["userPhone"]= 

  string(10) "1234567890" 

//以上信息转自 不代表个人观点 仅供参考 若满意 请采纳本答案

php 打印当前执行到的行数--为方便调试

echo '__LINE__';魔术变量之__LINE__记录了当前执行的代码所在行的行号。

PHP有不少能够用来直接调试的函数,查看变量、对象、数组、Everything……

下面是魔术变量

__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 中该值总是小写字母的。

__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

__NAMESPACE__ 当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)

php中的_LINE_与_FILE_分别代表什么意思

这两个常量。分别是当前文件的行数和文件名(含路径)。。

写在哪个 PHP 文件里。就只对这个文件有效。。不管有没有被别的程序 include 。。

例如:

//a.php

echo __FILE__;

//b.php

include("a.php");

运行 b.php 结果还是 a.php。因为 __FILE__ 写在那里,而不是在 b.php 里。

PHP中魔术变量__METHOD__与__FUNCTION__的区别

本文实例讲述了PHP中魔术变量__METHOD__与__FUNCTION__的区别,分享给大家供大家参考。具体分析如下:

__METHOD__类的方法名(PHP

5.0.0

新加)。返回该方法被定义时的名字(区分大小写)。

__FUNCTION__函数名称(PHP

4.3.0

新加)。自

PHP

5

起本常量返回该函数被定义时的名字(区分大小写)。在

PHP

4

中该值总是小写字母的。

文档解释都是说返回函数(方法)的名字。区别在于:

__FUNCTION__只是返回方法的名字;

__METHOD__返回类的名字和方法的名字。

?php

class

Test{

public

function

doit(){

echo

__FUNCTION__;

}

public

function

doitAgain(){

echo

__METHOD__;

}

}

$obj

=

new

Test();

$obj-doit();

echo

'br';

$obj-doitAgain();

?

输出结果为:

doit

Test::doitAgain

希望本文所述对大家的PHP程序设计有所帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。