if(!function_exists("copy_properties"))
{
function copy_properties($fromObj,$toObj)
{
foreach($fromObj as $key=>$value)
{
if(is_array($toObj))
{
$toObj[$key] = $value;
}
else if(is_object($toObj))
{
if(property_exists($toObj,$key))
{
$toObj->$key = $value;
}
}
}
return $toObj;
}
}
demo如下:
<?php
if(!function_exists("copy_properties"))
{
function copy_properties($fromObj,$toObj)
{
foreach($fromObj as $key=>$value)
{
if(is_array($toObj))
{
$toObj[$key] = $value;
}
else if(is_object($toObj))
{
if(property_exists($toObj,$key))
{
$toObj->$key = $value;
}
}
}
return $toObj;
}
}
function pre_dump($obj)
{
echo "<pre>";
var_dump($obj);
echo "</pre>";
}
class TestVo
{
public $id;
public $name;
public $age;
}
function test()
{
$test_array = array(
"id" => 1,
"name" => "ongsh",
"age" => 25
);
//数组到对象
$vo = copy_properties($test_array,new TestVo());
pre_dump($vo);
//对象到对象
$newVo = copy_properties($vo,new TestVo());
pre_dump($newVo);
//数组到对象
$arr = copy_properties($newVo,array());
pre_dump($arr);
//数组到数组
$newArr = copy_properties($arr,array());
pre_dump($newArr);
}
//execute
test();
?>
页面输出:
object(TestVo)#1 (3) {
["id"]=>
int(1)
["name"]=>
string(5) "ongsh"
["age"]=>
int(25)
}
object(TestVo)#2 (3) {
["id"]=>
int(1)
["name"]=>
string(5) "ongsh"
["age"]=>
int(25)
}
array(3) {
["id"]=>
int(1)
["name"]=>
string(5) "ongsh"
["age"]=>
int(25)
}
array(3) {
["id"]=>
int(1)
["name"]=>
string(5) "ongsh"
["age"]=>
int(25)
}
分享到:
相关推荐
在HTML中,为每个需要复制功能的元素(通常是一个按钮)添加一个特殊的`data-clipboard-text`属性,这个属性的值就是你希望用户复制的文本: ```html 这是要复制的文本1">复制1 这是要复制的文本2">复制2 ``` **...
PHP读取PDF文件, 仅支持 Thread Safety 版本的 PHP 5.5.x / 5.6.x / 7.0.x / 7.1.x / 7.2.x, 将对应的版本 php_xpdf.dll 复制到 PHP ext 目录下。 编译采用版本分别为 5.5.38 / 5.6.40 / 7.0.33 / 7.1.26 / 7.2.14 ...
这段代码的作用是将用户上传的文件从服务器的临时目录复制到指定的目标目录中。其中: - `$_FILES['uploadfile']['tmp_name']`:获取上传文件的临时路径。 - `$uploaddir`:目标目录路径。 - `$_FILES['uploadfile']...
也就是说,浅复制仅仅复制了对象的属性值,而不复制对象属性所引用的对象。在上面的代码中$tv3=clone$tv1;这行代码执行了浅复制。 接下来,让我们来谈谈“深复制”。深复制涉及到复制对象以及对象所引用的所有其他...
我们将从以下几个方面展开讨论:动态创建属性和方法、对象的复制与比较、加载指定文件、自动加载类文件以及命名空间的使用。 首先,动态创建属性和方法是PHP面向对象编程中的一个重要特性。在PHP中,可以利用魔术...
这个文件管理器的核心是PHP编程语言,它利用了PHP的网络交互能力和文件处理功能,使得用户能够上传、下载、编辑、删除、重命名、复制、移动文件或目录,以及查看文件属性和内容预览。 【标签】"php" 显示了这个项目...
这意味着静态属性不会随着对象的创建而复制,所有对象共享同一份数据。而每个对象实例都有自己的非静态属性副本。 2. 访问方式:静态属性和方法都通过类名和双冒号(`::`)来访问,而非静态属性通过对象和箭头运算符(`...
访问PHP类的私有和受保护的方法与属性 为什么? 对于在类中测试私有和受保护的方法很有用。 ##安装 您可以简单地下载或复制并粘贴ClassExposer.php类,并将其包含在您自己的php文件中。 作曲家 也可以通过...
- **复制并重命名php.ini**:你需要从`F:\phptools\php5.5\php.ini-production`复制一份php.ini文件,并将其重命名为`php.ini`。这个文件包含了PHP的配置选项,比如启用哪些扩展,设置内存限制等。 - **修改php.ini...
复制到C:\inetpub\wwwroot目录,以便IIS可以访问。 接着,配置PHP与IIS的集成。打开系统环境变量设置,添加一个新的系统变量,名为`PHPRC`,值为PHP的安装路径,例如`C:\php`。同时,编辑已存在的`Path`变量,将PHP...
过滤html标签在php中...复制代码 代码如下: $str= preg_replace(‘/\s(?!src)[a-zA-Z]+=[\’\”]{1}[^\’\”]+[\’\”]{1}/iu’,’ $str); 上面的实例代码是过滤掉除了src属性外的所有标签属性. 过滤设置过滤除了al
9. **对象复制**:在PHP5中,`clone`关键字用于创建对象的副本,而在PHP4中,对象复制是隐式的浅拷贝。 10. **引用传递**:PHP5中,函数参数默认为值传递,如果要实现引用传递,需要在参数前加`&`。 `phpf2f`工具...
PHP改编了Jimmy Bogard著名的.NET AutoMapper,以自动将一个对象的属性映射到另一个对象。 PHP与众不同 PHP不是类型安全的。 虽然数组,类和接口支持函数参数的类型提示,但是不能指定返回类型。 为了确保安全的...
- 将 C:\php 及其子目录 C:\php\ext 下的所有 .dll 文件复制到 C:\Windows\system32 目录下,并覆盖原有文件。 **3. 配置 PHP 设置** - **复制核心文件**:将 C:\php 目录下的 php.exe、php-win.exe 和 ...
2. **放置 PHP 扩展**:将 "php_ffmpeg.dll" 文件复制到 PHP 安装目录下的 "ext" 文件夹。这通常位于 "C:\php\" 或类似路径下,具体取决于你的 PHP 安装位置。 3. **复制系统库**:除了 PHP 扩展文件外,FFmpeg 还...
2) 右键默认网站属性---将看到默认属性对话框---选择ISAPI筛选器---添加一个新的筛选器--- 名称为php ---可执行文件为(C:\php\php5isapi.dll)(这里为PHP文件路径)----确定 3)进入主目录----选择配置弹出...
- 在IIS的“文档”属性页中添加`index.php`,`default.php`等默认文档。 - **测试配置**: - 创建一个名为`phpinfo.php`的文件在IIS的虚拟根目录中,内容为`<?php phpinfo(); ?>`。 - 使用浏览器访问`...