php拾遗1
程序员文章站
2024-01-12 21:45:58
...
1,魔术常量,有很多,总结之
A 识别脚本运行时的位置或名称等
_LINE_ 返回当前行号
_FILE_ 返回当前脚本的完整路径和文件名,包含一绝对路径
_FUNCTION_ 返回该函数被定义时的名字(大小写敏感)
_CLASS_ 类名称,返回该类别定义时的名字(大小写敏感)
_METHOD_ 类的成员方法名称(大小写敏感)
class MagicTest {
//返回当前函数的名称
function test_function() {
return __FUNCTION__;
}
//返回当前类的名字
function test_class() {
return __CLASS__;
}
//返回当前方法的名字
function test_method() {
return __METHOD__;
}
}
echo "_LINE_运行时的所在行号: ".__LINE__."
";
echo "当前PHP脚本的完整路径: ".__FILE__."
";
echo "当前执行的类名: ".MagicTest::test_class()."
";
echo "当前执行的函数名: ".MagicTest::test_function()."
";
echo "当前类的方法名: ".MagicTest::test_method()."
";
?>
还有OOP里的魔术
_get()与_set(),_call(),当试图写入一个不存在或不可见的属性时,会执行_set()方法,如
class myShop {
private $p = array();
function __set($name, $value) { //取得属性名称和值
echo "set::$name:$value
";
$this->p[$name] = $value;
}
function __get($name) { //取得属性名称
print "get::$name
";
return array_key_exists($name,$this->p) ? $this->p[$name] : null;
}
}
$shop = new MyShop();
$shop->apple = 2;
$shop->pear = 3;
$shop->pear++;
echo "苹果=". $shop->apple. "
";
echo "梨=". $shop->pear. "
";
?>
2 PHP里的CLONE()
class MyClass {
public $var = 1;
}
$obj1 = new MyClass();
$obj2 = $obj1;
$obj2->var = 2;
print $obj1->var;
?>
PHP4中上面的输出1,$obj2将值全部赋给$obj1,是建立对象的副本;但PHP5中,$obj1被当一个对象引用处理,当$obj2的值改变时,实际上修改的
是$obj的引用,所以输出2。
还有注意的是==比较两个对象的内容,===比较对象的句丙,即引用的 地址
A 识别脚本运行时的位置或名称等
_LINE_ 返回当前行号
_FILE_ 返回当前脚本的完整路径和文件名,包含一绝对路径
_FUNCTION_ 返回该函数被定义时的名字(大小写敏感)
_CLASS_ 类名称,返回该类别定义时的名字(大小写敏感)
_METHOD_ 类的成员方法名称(大小写敏感)
class MagicTest {
//返回当前函数的名称
function test_function() {
return __FUNCTION__;
}
//返回当前类的名字
function test_class() {
return __CLASS__;
}
//返回当前方法的名字
function test_method() {
return __METHOD__;
}
}
echo "_LINE_运行时的所在行号: ".__LINE__."
";
echo "当前PHP脚本的完整路径: ".__FILE__."
";
echo "当前执行的类名: ".MagicTest::test_class()."
";
echo "当前执行的函数名: ".MagicTest::test_function()."
";
echo "当前类的方法名: ".MagicTest::test_method()."
";
?>
还有OOP里的魔术
_get()与_set(),_call(),当试图写入一个不存在或不可见的属性时,会执行_set()方法,如
class myShop {
private $p = array();
function __set($name, $value) { //取得属性名称和值
echo "set::$name:$value
";
$this->p[$name] = $value;
}
function __get($name) { //取得属性名称
print "get::$name
";
return array_key_exists($name,$this->p) ? $this->p[$name] : null;
}
}
$shop = new MyShop();
$shop->apple = 2;
$shop->pear = 3;
$shop->pear++;
echo "苹果=". $shop->apple. "
";
echo "梨=". $shop->pear. "
";
?>
2 PHP里的CLONE()
class MyClass {
public $var = 1;
}
$obj1 = new MyClass();
$obj2 = $obj1;
$obj2->var = 2;
print $obj1->var;
?>
PHP4中上面的输出1,$obj2将值全部赋给$obj1,是建立对象的副本;但PHP5中,$obj1被当一个对象引用处理,当$obj2的值改变时,实际上修改的
是$obj的引用,所以输出2。
还有注意的是==比较两个对象的内容,===比较对象的句丙,即引用的 地址
上一篇: 2016年Web设计的10大趋势
下一篇: oracle一个事务的完整流程
推荐阅读
-
PHP获取指定时间段之间的 年,月,天,时,分,秒
-
javascript pattern只允许数字,英文字母和一些特殊字符 博客分类: Java编程PHP编程Web前端开发 HTMLWebJavaScriptjQuery
-
Linux下使用PHP连接SQL Server 2005
-
php 流程控制switch的简单实例
-
php将金额数字转化为中文大写
-
PHP语法什么都会,写项目也还算可以,但是很多核心代码都是网上源代码,怎样才能有进阶提升呢?请指教,谢谢
-
PHP编写的图片验证码类文件分享
-
编译PHP可以控制扩展目录和扩展文件吗?
-
php 使用curl模拟登录人人(校内)网的简单实例
-
PHP 学习网址