PHP新建类问题分析及解决思路


Posted in PHP onNovember 19, 2015

下面先给大家分析php新建类的问题

index.php文件

function __autoload($_className) {
require $_className.'.class.php';
}
//新建类??
if (isset($_GET['index'])) {
$m=new Main($_GET['index']);
}else{
$m=new Main();
}
include $m->ui();

main.class.php文件

class Main{
private $index;
//构造方法,初始化数据
public function __construct($index=''){
$this->index=$index;
}
//ui函数include相应的包含文件
public function ui(){
if(empty($this->index)||!file_exists($this->index.'.inc')){ 
$this->index='start';
}
return $this->index.'.inc';
} 
}

红字的部分有啥意义了:类中构造函数传参值已设默认是空(public function __construct($index='')),为啥不能直接写$m=new Main($_GET['index']);。如果不想在index做红字的if判断,类里需要怎么写了。谢谢,不是太理解

------解决思路----------------------

if (isset($_GET['index'])) {
 $m=new Main($_GET['index']); //如果 $_GET['index'] 存在则将 $_GET['index'] 作为参数
}else{
 $m=new Main(); //否则使用默认参数
}

直接使用 $_GET['index'] 将可能引发 NOTICE 级别错误

不加区别的使用传入数据,可能引发安全问题

------解决思路----------------------

稍微改了一下你看咋样。

<?php
class Main{
 private $index;
 //构造方法,初始化数据
 public function __construct($index='')
 {
 $this->index=$index?$index:'';
 }
 //ui函数include相应的包含文件
 public function ui()
 {
 if(empty($this->index)

------解决思路----------------------

!file_exists($this->index.'.inc'))
 { 
 $this->index='start';
 }
 return $this->index.'.inc';
 } 
}

ps:php怎么创建文件?

php项目开发过程中,常常需要自动创建一些文件,如生成静态html,生成php缓存文件,生成txt文件等等。下面就分享一下如何利用php程序创建文件,并向文件中写入内容。

一个项目中,可能不止一次需要生成文件,因此我们可以定义一个函数,当需要创建文件时再来调用这个函数,即可。

步骤一、定义函数writefile,用于以写的方式打开一个文件,文件不存在时自动创建,并向文件写入内容,代码如下。

<?php
function writefile($fname,$str){
 $fp=fopen($fname,"w");
 fputs($fp,$str);
 fclose($fp);
}
?>

步骤二、函数的使用。如创建test.txt文件,并写入内容“abc”,代码如下:

<?php
$filename='test.txt';
$str='abc';
writefile($filename,$str);
?>

通过上述两个步骤的操作,即可实现php创建文件的功能。

PHP 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
php+mysql数据库查询实例
Jan 21 PHP
php遍历CSV类实例
Apr 14 PHP
YII使用url组件美化管理的方法
Dec 28 PHP
Zend Framework创建自己的动作助手详解
Mar 05 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 PHP
php有效防止同一用户多次登录
Nov 19 #PHP
带你了解PHP7 性能翻倍的关键
Nov 19 #PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 #PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 #PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 #PHP
WordPress网站性能优化指南
Nov 18 #PHP
php+ajax实现无刷新分页
Nov 18 #PHP
You might like
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
域名查询代码公布
2006/10/09 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
python改变日志(logging)存放位置的示例
2014/03/27 Python
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
亚马逊印度站:Amazon.in
2017/10/15 全球购物
Omio葡萄牙:全欧洲低价大巴、火车和航班搜索和比价
2019/02/09 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
2014年幼儿园植树节活动方案
2014/03/02 职场文书
买房子个人收入证明
2014/10/12 职场文书
文艺晚会开场白
2015/05/29 职场文书
地球上的星星观后感
2015/06/02 职场文书
毕业生学校组织意见
2015/06/04 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers