PHP中的stdClass
如果所有的Class都应该存在于一个默认的层级中的话,那么最顶层应该是最为一般的Class,也就是说极为抽象的,每一个下层的Class均比其上层
的Class(即父类)更加专门化。基于该思想,在PHP中,这个顶层的Class被命名为“stdClass”,且作为一个“Standard
Class”,你可以把它看成是一个不含任何属性和方法的类。
使用stdClass的目的: 在运行时添加属性到基对象(Base Object)
问题
你想创建一个对象,并在其中添加一些属性,但是你却不想把它作为一个明确的类正式地定义它。这一点在一些情况下是相当有用的,例如当你需要定义一个方法来
返回带有某些属性(不确定的)的对象时,就如同从mysql_fetch_object( ) 或者 imap_header( )的使用一样。
解决方案
使用PHP内建类,stdClass:
$pickle
=
new
stdClass;
$pickle
->type =
'fullsour'
;
讨论
创建一个stdClass类型的对象,其不含有任何属性和方法,就像array( )返回一个空数组一样。
你可以为其创建一个新的属性并分配给它某个值,然后检查它的值。
$guss
=
new
stdClass;
$guss
->location =
'Essex'
;
print
"$guss->location\n"
;
$guss
->location =
'Orchard'
;
print
"$guss->location\n"
;
方法,无论如何在一个对象被初始化之后再去定义它。但是在你想使用一个像从数据库结果集中提取出来的对象(mysql_fetch_object方法,毕竟在调用它是你并不像真正地去请求数据库)这样的一般对象时,创建 stdClass 对象是非常有用的。如下:
function
pc_format_address(
$obj
) {
return
"$obj->name <$obj->email>"
;
}
$sql
=
"SELECT name, email from users WHERE id=$id"
;
$dbh
= mysql_query(
$sql
);
$obj
= mysql_fetch_object(
$dbh
);
print pc_format_address(
$obj
);
pc_format_address方法使用一个对象的name 和 email 属性,然后使其格式化后返回(如上代码)。下面我们不调用mysql_fetch_object方法,应该如何使用呢?
$obj
=
new
stdClass;
相关文档:
PHP是个伟大的web开发语言,灵活的语言,但是看到php程序员周而复始的犯的一些错误。我做了下面这个列表,列出了PHP程序员经常犯的10中错误,大多数和安全相关。看看你犯了几种
1.不转意html entities
一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意。
echo $ ......
系统版本比较
mixed version_compare ( string version1, string version2 [, string operator] )
version_compare('5.1','<'); //比较当前版本是否小于5.1
是否开启自动/
get_magic_quotes_gpc()
return 1 on: will add slash.
return 0 off:willn't add.
if(get_magic_quotes_gpc()) {
$cm ......
// 我看过的两本书 PHP 的书中提及到 PHP6 的新特性,其中两个是 namespace 和 unicode,
// 从 PHP5.3 开始,php 已经支持 namespace 了; 而 Unicode 在 PHP5.3 中还没有发布。
//
// 看书看到 PHP 的多字节处理,想到前段时间还会自己截取 中英混合的字符串,那时候花了很长时间来看 utf-8,
// gbk, gb2312, gb180 ......
我打算在命令行中这样调用php: cat filename|php a.php,让a.php读取filename里面的每行记录进行处理,方法如下:
<?php
$fp = fopen("/dev/stdin", "r");
while($input = fgets($fp, 10000))
{
echo urldecode($input);
}
?>
......
平时用 htmlspecialchars() 来过滤html, 但是把html的字符转义了,最后显示出来的就是html源代码, 利用strip_tags()就可以把html标签去除掉.
[php]
$str = 'harryxu
‘;
echo(htmlspecialchars($str) . ‘
‘);
echo(strip_tags($str));
// output:
// harryxu
// harryxu
?>
......