为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
PHP进阶篇_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

PHP进阶篇

Jason PHP开发工程师
难度初级
时长 9小时28分
  • PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。 例: <?php class Car { public $speed = 10; //在这里使用重载实现speedDown方法 public function __call($name,$args){ if($name=='speedDown'){ $this->speed-=10; } } } $car = new Car(); $car->speedDown(); //调用不存在的speedDown方法 echo $car->speed; ?>
    查看全部
  • 跟Unix系统命令类似,PHP使用unlink函数进行文件删除。 unlink($filename); 删除文件夹使用rmdir函数,文件夹必须为空,如果不为空或者没有权限则会提示失败。 rmdir($dir); 如果文件夹中存在文件,可以先循环删除目录中的所有文件,然后再删除该目录,循环删除可以使用glob函数遍历所有文件。 foreach (glob("*") as $filename) { unlink($filename); }
    查看全部
  • 通过filesize函数可以取得文件的大小,文件大小是以字节数表示的。 $filename = '/data/webroot/usercode/code/resource/test.txt'; $size = filesize($filename); 如果要转换文件大小的单位,可以自己定义函数来实现。 function getsize($size, $format = 'kb') { $p = 0; if ($format == 'kb') { $p = 1; } elseif ($format == 'mb') { $p = 2; } elseif ($format == 'gb') { $p = 3; } $size /= pow(1024, $p); return number_format($size, 3); } $filename = '/data/webroot/usercode/code/resource/test.txt'; $size = filesize($filename); $size = getsize($size, 'kb'); //进行单位转换 echo $size.'kb'; 值得注意的是,没法通过简单的函数来取得目录的大小,目录的大小是该目录下所有子目录以及文件大小的总和,因此需要通过递归的方法来循环计算目录的大小。
    查看全部
  • 件有很多元属性,包括:文件的所有者、创建时间、修改时间、最后的访问时间等。 fileowner:获得文件的所有者 filectime:获取文件的创建时间 filemtime:获取文件的修改时间 fileatime:获取文件的访问时间 其中最常用的是文件的修改时间,通过文件的修改时间,可以判断文件的时效性,经常用在静态文件或者缓存数据的更新。 $mtime = filemtime($filename); echo '修改时间:'.date('Y-m-d H:i:s', filemtime($filename));
    查看全部
  • 与读取文件对应,PHP写文件也具有两种方式,最简单的方式是采用file_put_contents。 $filename = './test.txt'; $data = 'test'; file_put_contents($filename, $data); 上例中,$data参数可以是一个一维数组,当$data是数组的时候,会自动的将数组连接起来,相当于$data=implode('', $data); 同样的,PHP也支持类似C语言风格的操作方式,采用fwrite进行文件写入。 $fp = fopen('./test.txt', 'w'); fwrite($fp, 'hello'); fwrite($fp, 'world'); fclose($fp);
    查看全部
  • 一般情况下在对文件进行操作的时候需要先判断文件是否存在,PHP中常用来判断文件存在的函数有两个is_file与file_exists. $filename = './test.txt'; if (file_exists($filename)) { echo file_get_contents($filename); } 如果只是判断文件存在,使用file_exists就行,file_exists不仅可以判断文件是否存在,同时也可以判断目录是否存在,从函数名可以看出,is_file是确切的判断给定的路径是否是一个文件。 $filename = './test.txt'; if (is_file($filename)) { echo file_get_contents($filename); } 更加精确的可以使用is_readable与is_writeable在文件是否存在的基础上,判断文件是否可读与可写。 $filename = './test.txt'; if (is_writeable($filename)) { file_put_contents($filename, 'test'); } if (is_readable($filename)) { echo file_get_contents($filename); }
    查看全部
  • PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中。 $content = file_get_contents('./test.txt'); file_get_contents也可以通过参数控制读取内容的开始点以及长度。 $content = file_get_contents('./test.txt', null, null, 100, 500); PHP也提供类似于C语言操作文件的方法,使用fopen,fgets,fread等方法,fgets可以从文件指针中读取一行,freads可以读取指定长度的字符串。 $fp = fopen('./text.txt', 'rb'); while(!feof($fp)) { echo fgets($fp); //读取一行 } fclose($fp); $fp = fopen('./text.txt', 'rb'); $contents = ''; while(!feof($fp)) { $contents .= fread($fp, 4096); //一次读取4096个字符 } fclose($fp); 使用fopen打开的文件,最好使用fclose关闭文件指针,以避免文件句柄被占用。
    查看全部
  • 前面的小节,我们已经接触过访问控制了,访问控制通过关键字public,protected和private来实现。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。 类属性必须定义为公有、受保护、私有之一。为兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。 class Car { $speed = 10; //错误 属性必须定义访问控制 public $name; //定义共有属性 } 类中的方法可以被定义为公有、私有或受保护。如果没有设置这些关键字,则该方法默认为公有。 class Car { ​ //默认为共有方法 function turnLeft() { } } 如果构造函数定义成了私有方法,则不允许直接实例化对象了,这时候一般通过静态方法进行实例化,在设计模式中会经常使用这样的方法来控制对象的创建,比如单例模式只允许有一个全局唯一的对象。 class Car { private function __construct() { echo 'object create'; } private static $_object = null; public static function getInstance() { if (empty(self::$_object)) { self::$_object = new Car(); //内部方法可以调用私有方法,因此这里可以创建对象 } return self::$_object; } } //$car = new Car(); //这里不允许直接实例化对象 $car = Car::getInstance(); //通过静态方法来获得一个实例
    查看全部
  • <?php session_start(); //假设用户登录成功获得了以下用户数据 $userinfo = array( 'uid' => 10000, 'name' => 'spark', 'email' => 'spark@imooc.com', 'sex' => 'man', 'age' => '18' ); header("content-type:text/html; charset=utf-8"); /* 将用户信息保存到session中 */ $_SESSION['uid'] = $userinfo['uid']; $_SESSION['name'] = $userinfo['name']; $_SESSION['userinfo'] = $userinfo; echo "welcome ".$_SESSION['name'] . '<br>'; //* 将用户数据保存到cookie中的一个简单方法 */ $secureKey = 'imooc'; //加密密钥 $str = serialize($userinfo); //将用户信息序列化 echo "用户信息加密前:".$str; $str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secureKey, $str, MCRYPT_MODE_ECB)); echo "用户信息加密后:".$str; //将加密后的用户数据存储到cookie中 setcookie('userinfo', $str); //当需要使用时进行解密 $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secureKey, base64_decode($str), MCRYPT_MODE_ECB); $uinfo = unserialize($str); echo "解密后的用户信息:<br>"; var_dump($uinfo);
    查看全部
  • 删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。 session_start(); $_SESSION['name'] = 'jobs'; unset($_SESSION['name']); echo $_SESSION['name']; //提示name不存在 如果要删除所有的session,可以使用session_destroy函数销毁当前session,session_destroy会删除所有数据,但是session_id仍然存在。 session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); session_destroy(); 值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。 session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); unset($_SESSION); session_destroy(); var_dump($_SESSION); //此时已为空 如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。
    查看全部
  • PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。
    查看全部
  • 索引数组就是初始化时带有下标(中括号)的数组。
    查看全部
  • 可以使用print_r($fruit);语句输出数组键及对应的值。
    查看全部
  • PHP有两种数组:索引数组、关联数组。 都是针对数组的key而言的。
    查看全部
  • 在面向过程的程序设计中function叫做函数,在面向对象中function则被称之为方法。
    查看全部

举报

0/150
提交
取消
课程须知
需要有一定的网页基础知识如HTML、CSS样式等,并且已经学习完成《PHP入门篇》对PHP已经有了简单的了解,如变量、常量、数据类型等。
老师告诉你能学到什么?
全面的掌握PHP的理论知识与实践中的应用方法,提高编程能力与掌握网页开发技能。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!