关于PHP静态类一个弱弱的问题~~~

Kareum-X 发布于 2015/01/11 10:44
阅读 1K+
收藏 0

最近好无聊所以想把CodeIgniter改改玩,这次的目标是把CI换成全部由静态类组装的框架。
但不知道实例化以后和静态的好坏处,只是在网上路过时看过有人说静态省资源什么的...
我是喜欢静态的,冒号我觉得用着舒服 =  =;
发现静态类没有构造函数和析构函数,也没有__set(),搞起来好难
构造是做出来了 问题是析构和__set()想不出逻辑。__callStatic就不想用了太麻烦了


spl_autoload_register(function($class){
	$Path = strtolower(str_replace('\\','/',$classes));
	!file_exists(ROOTPATH.$Path.EXT) && exit(scatter('/',$Path,-1,1).'类文件不存在!');
	require ROOTPATH.$Path.EXT;
	method_exists($class,'construct') && $class::construct();
});


这个是类似构造的,=  = 也可以叫自动初始化吧(反正跟构造函数一样能第一时间执行,我是这么理解的)
staticClass::aaa('xxxxx');
staticClass::ccc('xxxxx');

这样的话先执行 staticClass::construct();
后再执行 staticClass::aaa(); 和 staticClass::ccc();
construct 也执行一次的,但这样算不算construct一样的呢?= = ;

还有 这样全用静态写就不能做析构了么?不用callStatic 的话做不出set么?静态和实例化谁省资源?运行速度有差别么?

 

 

 

啊,对了,代码洁癖(?算文字洁癖吧)是不是一种病?
有没有 不能用 g , j , p , q , y 的童靴们?


以下是问题补充:

@Kareum-X:补充一下,我不是要做面向对象开发,而是面向过程吧? 就是看不惯 $xx = new XXX; $xx->ccc(); 直接 XXX::ccc(); 觉得这个更省事 (2015/01/12 00:30)
加载中
0
甘薯
甘薯

没必要用静态...

事实上php的工作模式决定了基本上用到的对象都是静态的, 因为大多数时间你只需要new一次就够用了...

Kareum-X
Kareum-X
按最新回答来选的 …… ㅇㅅㅇ
0
月影又无痕
月影又无痕

全用静态类,那么魔术方法,几乎均不可用了。也失去了类的意义了。

有代码洁癖的程序员,不是好程序员。

Kareum-X
Kareum-X
我也改善这毛病,可不是一天两天能改的,唉,因为这个毛病连域名都不能买 里面带 g , j , p , q , y 这些字母的了。。。。。
0
南湖船老大
南湖船老大
你这面向对象学的也是醉了。这不是洁癖,完全是瞎搞,根本不懂OO。。。把你老师叫出来,看我不打死他。
Kareum-X
Kareum-X
= = 不关老师吧。。。我还是习惯面向过程?的缘故吧
0
笨蛋0007
笨蛋0007
继承多态呢?
Kareum-X
Kareum-X
继承这个问题上我也想过,但是不是大工程,那么其实没必要继承把?直接 在控制器里 引入自己想用的类就行了额?
0
聽雨人
聽雨人
参考laravel,你可以实现一个__call_static方法,然后在里面初始化,并返回对象就好了。
或许你还对 单例模式,工厂模式,ioc/di感兴趣,可以百度一下看看是不是你想知道的。
Kareum-X
Kareum-X
哦哦,对对我对单列和工厂感兴趣,这个我听过,在网上的视频教程上讲过的
返回顶部
顶部