我有一个个人PHP应用程序,大约有15个类。每个类仅在页面执行时启动一次。换句话说,当页面加载时:
我已经听过Singletons的所有问题,我讨厌这样做,“全球$ var”到处都是。请告诉我如何将这种类型的结构拉出来并进入开发人员喜欢的东西。我想以正确的方式编写软件,但我似乎无法为这种类型的执行找到一个非常简单的代码框架。
哦 - 我不是在寻找MVC框架解决方案。我很想你如何学习15门课程并将它们变成一个合适的框架来协同工作。我也很想说明以这种方式发展是多么“愚蠢”。
答案 0 :(得分:2)
如果你想让所有类都有权访问变量,也许你可以尝试继承,例如
class Settings
{
var $page_name = "My Page";
var $database_name = "my_db";
}
然后让所有类继承此类,如
class Page extends Settings
{
var $id = 0;
var $template = "";
function __construct() {}
}
$page = new Page();
echo $page->page_name;
或者您可以将值定义为常量,如果它们是
define("PAGE_NAME", "My Page");
您可以随处访问PAGE_NAME
我不以任何方式说这是正确的方式,它只是 方式。 :)
答案 1 :(得分:0)
我在开发php应用程序时遇到了同样的问题。我最终做的是创建静态方法和静态变量的类。实质上,它们的工作方式有点像名称空间我不确定这是多么“标准”,但它在实践中效果很好。
唯一的另一个选择是创建一个像你在问题中提到的单例,但除非你需要像构造函数和解构器这样的东西,否则imho可能会有点过分。
示例:
<?php
class MyClass{
private static $my_static_variable;
static public function myStaticMethod(){
return self::$my_static_variable;
}
}
然后您可以在任何地方使用它而无需使用global:
function foo(){
MyClass::myStaticMethod();
}
class Bar{
public function myBarMethod(){
MyClass::myStaticMethod();
}
}
答案 2 :(得分:0)
我自己一直在考虑同样的事情,并且我可以找到唯一的结论来破解MVC框架并看看它是如何构建的。
另一件事是提到的,从一个超级类开始并从那里继承。
所以有一个类Object,然后将其继承到某个东西等等。