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

下面先给大家分析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 级别错误


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


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


稍微改了一下你看咋样。



<?phpclass 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,用于以写的方式打开一个文件,文件不存在时自动创建,并向文件写入内容,代码如下。



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



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


SyntaxHighlighter.highlight();