gpt4 book ai didi

PHP 面向对象的 Web 应用程序

转载 作者:可可西里 更新时间:2023-10-31 23:44:18 24 4
gpt4 key购买 nike

我有一个名为“Layout”的类用于页面布局,另一个名为“User”的类用于用户。

我创建的每个页面,都会实例化一个新布局。

当用户登录时,会实例化一个新用户。

如何获取布局类的实例以了解实例化用户?我还可以将 User 的整个实例保存在 session 变量中。我认为这是个坏主意。这方面的最佳做法是什么?

class User
{
var $userid;
var $email;
var $username;

function User($user)
{
$this->userid = $this->getUid($user);
$this->email = $this->getEmail($user);
$this->username = $user;
}
function getUid($u)
{
...
}

function getEmail($u)
{
...
}
}

class Layout
{

var $var1;
var $var2;
var $var3;

function Layout()
{
//defaults...
}


function function1()
{
echo "something";
}


function function2()
{
echo "some other stuff";
}

function function3()
{
echo "something else";
}

}

例如,在 index.php 中,我将执行以下操作:

include "user.php"
include "layout.php"

$homelayout = new Layout();
$homelayout->function1();
$homelayout->function2();
$homelayout->function3();

现在假设在 login.php 中有人登录了:

include "layout.php"
include "user.php"

if(userAuthSuccess)
{
$currentUser = new User($_POST['username']);
}

从现在开始,只要用户没有注销,从所有 php 文件中访问 $currentUser 及其成员变量(如 $currentUser->email 等)的最佳方法是什么?

最佳答案

我认为上述解决方案的最佳补救措施是使用一个称为依赖注入(inject)的概念,您可以借此编写一个额外的类,将依赖项(在本例中为对象)注入(inject)请求类。大多数现代开发人员将坚持使用这种将依赖项注入(inject)其应用程序的技术,因为这将实现:

松散耦合的程序 - 由于依赖项是由第三方注入(inject)的,因此无需在程序逻辑中对依赖项进行硬编码。

可维护代码——这是 OOP 范例最吸引人的特性。在涉及大型程序时尤其如此。

内存管理 - 作为开发人员,您可以根据自己的规范要求自由管理内存。

关于PHP 面向对象的 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com