php类

PHP类的魔术方法详解

孤人 提交于 2020-04-06 12:28:12
构造方法和析构方法( __construct、__destruct ) __construct 在类实例化的时候会调用。 __destruct 对象被手动销毁或垃圾回收机制收回前会被调用。 unset() ,对象=null 属性重载( __set、__get、__isset、__unset ) public __set ( string $name , mixed $value ) : void public __get ( string $name ) : mixed public __isset ( string $name ) : bool public __unset ( string $name ) : void 在给不可访问或不存在属性赋值时, __set 会被调用。 读取不可访问或不存在属性的值时, __get 会被调用。 当对不可访问或不存在属性调用 isset() 或 empty() 时, __isset 会被调用。 当对不可访问或不存在属性调用 unset() 时, __unset 会被调用。 参数中 name 是调用的属性名,value 是给属性指定的值。 方法重载( __call、__callStatic ) public __call ( string $name , array $arguments ) : mixed public static _

PHP面试:什么是类的多态性,请写出一个例子

情到浓时终转凉″ 提交于 2020-03-23 12:26:22
类的三大特性,封装、继承、多态,前两个比较简单,一般不会问到,多态则是考察最多的,一般出现在笔试中。 描述 多态性是指同一操作作用于不同的类的实例上可执行不同的逻辑。 多态是指 执行不同的逻辑 ,很多资料上介绍这里时总是说 “同一操作作用于不同的类的实例上时,会获得不同的结果。”,当年看到时就很困惑,一个函数给不同参数的时候它的结果也是不同的,这不是理所当然的嘛,其他它根本不在乎结果是否相同,而是强调执行不同的逻辑,即走到不同的方法体内。 示例 interface animal{ function can(); } class cat implements animal{ function can(){ echo "I can climb"; } } class dog implements animal{ function can(){ echo "I can swim"; } } function work($obj){ if($obj instanceof animal){ $obj->can(); }else{ echo 'no can'; } } work(new cat()); work(new dog()); 运行work时会根据传入参数的不同,选择执行不同的can方法。 上边的父类是接口,对于接口与普通类同样适用。 来源: https://www.cnblogs

PHP生成PDF文档的FPDF类

。_饼干妹妹 提交于 2020-03-22 05:46:05
以前在PHP4的早期版本中用PDFlib生成PDF文档比较容易,现在升级到PHP5了,发现更麻烦了,装的PHP 5.2.4默认没有PHPlib,从php.net上找了一个,装上竟一直报错,开始以为是版本兼容问题,后来在租来的服务器上(PHP 4.3.11)也是不行,在网上搜索,看到PHPlib居然还是非免费的,算了吧,放弃! 继续搜索其他的解决方案,phpMyAdmin用的有生成PDF的功能,是TCPDF,测试发现不支持中文,所有的汉字都只显示为方格,戒烟如你初步判断为字库问题,网上也没有合适的解决办法,只好再放弃! 最后才找到一个叫FPDF的东西,简单、实用、支持中文,在PHP 5.2.4和PHP 4.3.11上运行均正常,完全符合戒烟如你的要求,吼吼~~就是你了!   下载: http://www.fpdf.org/ 中文包: http://www.fpdf.org/download/chinese.zip 中文手册: http://www.fpdf.org/en/dl.php?id=72 你也可以直接从本文的附件里下载,提供了1.5.2和1.5.3两个版本的FPDF,但中文版的手册只有1.5.2的,说的还满详细,基本可以指导操作了。   把中文包里的chinese.php和ex.php解压到下载的FPDF包里,运行ex.php,就可以看到繁体中文显示的东西。   把下面的代码

php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

大兔子大兔子 提交于 2020-03-21 07:38:20
1、函数 php内置函数可以直接使用,如果没有安装php扩展即可 自定义函数 //函数function 函数名 function dump($var = null){ //支出默认参数值 echo ‘<pre/>’; var_dump($var); } 2、类(class)和对象( new Obj) <?php //定义一个人的类,现在还不是对象 class Person { //私有属性 private $eye = '大眼睛'; private $mouth = '小嘴巴'; private $leg = '大长腿'; //构造方法 new 对象的时候自定调用 public function __construct() { echo __CLASS__; } public function run() { echo $this->leg; } //学习 会用到 腿(走路)、眼睛(看书)、嘴(念书) public function study() { echo $this->leg, $this->eye, $this->mouth; } } //使用类 new以后就变成了对象 $person = new Person(); //输出 Person $person -> run(); //输出 大长腿 $person -> study(); //输出 大长腿 大眼睛 小嘴唇 3

php文件上传类

我怕爱的太早我们不能终老 提交于 2020-03-07 14:34:29
<?php class FileUpload { private $filepath; //指定上传文件保存的路径 private $allowtype=array('gif', 'jpg', 'png', 'jpeg'); //充许上传文件的类型 private $maxsize=1000000; //允上传文件的最大长度 1M private $israndname=true; //是否随机重命名, true false不随机,使用原文件名 private $originName; //源文件名称 private $tmpFileName; //临时文件名 private $fileType; //文件类型 private $fileSize; //文件大小 private $newFileName; //新文件名 private $errorNum=0; //错误号 private $errorMess=""; //用来提供错误报告 //用于对上传文件初使化 //1. 指定上传路径, 2,充许的类型, 3,限制大小, 4,是否使用随机文件名称 //让用户可以不用按位置传参数,后面参数给值不用将前几个参数也提供值 function __construct($options=array()){ foreach($options as $key=>$val){ $key

(实用篇)PHP ftp上传文件操作类

送分小仙女□ 提交于 2020-03-03 00:00:58
<?php /** * 作用:FTP操作类( 拷贝、移动、删除文件/创建目录 ) */ class class_ftp { public $off; // 返回操作状态(成功/失败) public $conn_id; // FTP连接 const FTP_HOST='*.*.*.*'; const FTP_PORT='21'; const FTP_USER='*******'; const FTP_PASS='*******'; /** * 方法:FTP连接 * @FTP_HOST -- FTP主机 * @FTP_PORT -- 端口 * @FTP_USER -- 用户名 * @FTP_PASS -- 密码 */ function __construct() { $this->conn_id = @ftp_connect(self::FTP_HOST,self::FTP_PORT) or die("FTP服务器连接失败"); @ftp_login($this->conn_id,self::FTP_USER,self::FTP_PASS) or die("FTP服务器登陆失败"); @ftp_pasv($this->conn_id,1); // 打开被动模拟 } /** * 方法:上传文件 * @path -- 本地路径 * @newpath -- 上传路径 * @type --

php类的继承

强颜欢笑 提交于 2020-03-02 11:41:44
父类 class Father{ public $msg = '父类数据'; public function __construct($params = []){ if(is_array($params)){ if(array_key_exists('msg',$params)){ $this->msg = '实例化时被重新赋值:'.$params['msg']; } } } } 子类 class Content extends Father{ public $msg = '子类数据'; } 实例化 return new Content(['msg'=>'实例化赋的值']); 实例化之后返回的数据是一个对象,对象里面的键就是子类里的变量包括继承自父类的变量,如下:子类多加一变量 class Content extends Father{ public $msg = '子类数据'; public $code = '100'; } 来源: CSDN 作者: 码林鼠 链接: https://blog.csdn.net/weixin_41254345/article/details/104605436

PHP类的变量与成员,及其继承、访问与重写要注意的问题

被刻印的时光 ゝ 提交于 2020-03-02 03:52:54
PHP的类及其实例: <?php class Myclass{ public $prop = 123; } $obj = new Myclass(); ?> 类的成员属性(属性的称呼相对于‘方法’而言)包括类常量和类变量,其中类常量在定义时不可为空, 类的属性在定义时如果被赋值,只能使用变量和数组,并且不能是表达式 ,因为类属性在编译期被初始化,PHP在编译器不执行表达式。 1、 成员的访问控制 public:可以继承,可以在类的方法之外被访问,如$obj->prop; protected:可以继承,不可以在类的方法之外被访问; private:不可以继承,不可以在类的方法之外访问; PHP4使用var来声明类的属性,在PHP5之后不再使用,PHP5.3之前使用被警告,在PHP5.3之后可以在public之前或单独使用作为public的别名。 这三个访问控制关键字也可以修饰构造函数,当private和protected修饰类的构造函数时,只能通过一个public static的静态方法调用构造函数以实例化对象,因为该构造函数无法在类之外被访问了,比如,单例类的实现: <?php class Singleton{ private static $instance = null ; public $k = 88; private function __construct(){ }

PHP 之文件上传类封装

半腔热情 提交于 2020-03-01 18:12:32
一、前端代码 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>文件上传</title> </head> <body> <form action="do.php" method="post" enctype="multipart/form-data"> <input type="file" name="file" value=""><br> <input type="submit" value="上传文件"/><br> </form> </body> </html> 二、php代码 <?php /** * Created by PhpStorm. * User: Yang * Date: 2019/8/13 * Time: 14:02 */ include_once "./Upload.php"; $upload = new Upload(); if (!$upload->uploadFile("file")) { echo $upload->errorInfo; } 三、类库代码 <?php /** * Created by PhpStorm. * User: Yang * Date: 2019/8/13 * Time: 13:49 */ class Upload { //文件上传路径

php 的文件操作类

末鹿安然 提交于 2020-03-01 17:41:32
<?php header('Content-type:text/html;charset=utf8'); Class FILE { private static $path; private static $files = []; private static $dirs = []; private function __construct($path) { try { if (is_dir($path)) { self::$path = strtr($path, ['\\' => '/']); } } catch (\Exception $e) { echo $e->getMessage(); } } private function runFiles($path) { $arr = ['files' => [], 'dirs' => [], 'all' => []]; $target = array_diff(scandir($path), ['.', '..']); array_walk($target, function ($val, $key) use (&$arr, $path) { $subTarget = "{$path}/{$val}"; if (is_file($subTarget)) { array_push($arr['files'], "{$path}/"