分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

PHP赋值函数的利用需求

发布时间:2023-09-06 02:12责任编辑:白小东关键词:PHP

拿一段PHP代码来说

<?phpclass Site { ?/* 成员变量 */ ?var $url; ?var $title; ???/* 成员函数 */ ?function setUrl($par){ ????$this->url = $par; ?} ???function getUrl(){ ????echo $this->url . PHP_EOL; ?} ???function setTitle($par){ ????$this->title = $par; ?} ???function getTitle(){ ????echo $this->title . PHP_EOL; ?}}?>

这一段代码是比较基础的面对对象代码,成员变量和成员函数,我们可以看到成员函数中setUrl()和setTitle()分别负责的是给$url和$title进行赋值,这一切都没有什么问题,直到今天看到一段反序列化代码

<?php$x = new aclass(‘a‘,‘b‘);$vx = serialize($x);

代码实例化了aclass类,直接把字符串 a 和 b 作为参数传入了类中....就突然想,既然可以直接在类实例化的时候赋值,为什么一定要用赋值函数呢?岂不是多此一举了么?一直不解,就接着写代码,没写多久就发现了其实有这种需求

<?php//上传文件配置$allowtype = array("gif", "png", "jpg");$size = 2000000;$path = "./uploads/";//判断文件是否上传到服务器if($_FILES[‘myfile‘][‘error‘] > 0) { ???echo ‘上传错误:‘; ???switch ($_FILES[‘myfile‘][‘error‘]) { ???????case 1: ???????????die(‘上传文件大小超出了PHP配置文件中约定值: upload_max_filesize‘); ???????case 2: ???????????die(‘上传文件大小超出了表单中的约定值:max_file_size‘); ???????case 3: ???????????die(‘文件只被部分上载‘); ???????case 4: ???????????die(‘没有上传任何文件‘); ???????default: ???????????die(‘未知错误‘); ???}} //获取文件后缀名$hz = array_pop(explode(".", $_FILES[‘myfile‘][‘name‘]));//匹配后缀名if(!in_array($hz, $allowtype)) { ???die("这个文件类型{$hz}不允许!");}//文件大小判断if($_FILES[‘myfile‘][‘size‘] > $size) { ???die("超过了允许的字节大小:{$size}");}//文件名$filename = date("YmdHis").rand(100,999).".".$hz;//判断是否为上传文件if (is_uploaded_file($_FILES[‘myfile‘][‘tmp_name‘])) { ???if (!move_uploaded_file($_FILES[‘myfile‘][‘tmp_name‘], $path.‘/‘.$filename)) { ???????die(‘问题:不能将文件移动到指定目录。‘); ???}}else{ ???die("问题:上传文件{$_FILES[‘myfile‘][‘name‘]}不是一个合法文件: ");}//序列化引用类$v = new getImgnewcode($path.‘/‘.$filename,NULL,$_FILES[‘x‘],$_FILES[‘y‘]);$sv = serialize($v);$svWrite = fopen(‘./post.txt‘, ‘a+‘) or die(‘打开文件失败‘);fwrite ($svWrite, $sv.‘\n‘);fclose ($svWrite);

这是某个后台的片段代码,功能是管理员上传一张海报,然后设定好二维码的位置,在前台用户通过输入网址生成的二维码图片通过getImgnewcode类进行海报的合成。但是在这种情况下,用户的URL还为未知数,所以我提前传入的值为NULL

$v = new getImgnewcode($path.‘/‘.$filename,NULL,$_FILES[‘x‘],$_FILES[‘y‘]);

等到反序列化以后,我们就不可以修改实例化类的时候直接带入的参数了,必须通过类中定义的赋值函数来完成变量的重新赋值

PHP赋值函数的利用需求

原文地址:https://www.cnblogs.com/xsseng/p/9557764.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved