Php 在Codeigniter控制器中重用类
我正在编写我的第一个CodeIgniter应用程序(非常熟悉PHP,但不熟悉CI),并具有以下设置: 我有一个控制器,注册,控制注册过程。控制器的每个功能都是该过程的下一步。我有一个对象,Php 在Codeigniter控制器中重用类,php,oop,codeigniter,Php,Oop,Codeigniter,我正在编写我的第一个CodeIgniter应用程序(非常熟悉PHP,但不熟悉CI),并具有以下设置: 我有一个控制器,注册,控制注册过程。控制器的每个功能都是该过程的下一步。我有一个对象,Did,当前正在作为库加载。此对象的属性/变量会随着注册过程的进行而更新 我遇到的问题是,注册控制器的一个函数的属性不会传递到下一个函数。这就好像类是用每个函数重新构造的 有没有一种方法可以在整个控制器中重用类而不必重新实例化它?我也不希望序列化并存储在会话中 提前感谢。您遇到的问题是,您依赖于应用程序的内存状
Did
,当前正在作为库加载。此对象的属性/变量会随着注册过程的进行而更新
我遇到的问题是,注册控制器的一个函数的属性不会传递到下一个函数。这就好像类是用每个函数重新构造的
有没有一种方法可以在整个控制器中重用类而不必重新实例化它?我也不希望序列化并存储在会话中
提前感谢。您遇到的问题是,您依赖于应用程序的内存状态,以便在不同的请求之间保持不变 您希望类在请求之间使用与
Did
对象相同的实例化
这不是PHP/HTTP的工作方式。每个请求都是单独处理的,并且是应用程序自己的实例。因此,每个请求都会创建一个新的Did
对象
要持久化状态,您需要使用会话在请求之间传输信息,使用数据库处理持久化状态,或者两者的组合
一如既往,同一个问题有很多解决方案。如果它不适合您的实现,请忽略它 在对象中保留注册步骤是一个好主意-但是,每次加载新页面时,CI都会重建所有对象。为了使数据持久化,应该将其存储在会话中,但这并不意味着您必须在控制器中使用会话变量 如何将数据传输到应用程序?是通过表单还是ajax 一种方法是从会话中取消序列化对象,并将其作为对象存储在控制器的构造函数中。这样,您仍然可以对它运行$myObj->function(),并使用$myObj->save()函数重新序列化和存储它
希望有帮助 寻找会话和序列化。我不想使用会话变量,但看起来我可能不得不这样做。我正在通过表单将数据传输到应用程序,并提交到流程的下一步。没有想到在对象中有一个“save”函数。这可能行得通。谢谢。我在我的
Did
类中使用了工厂模式,并使用了一个使用Codeigniter会话类的保存函数。它成功了。谢谢你的引导。正确。我想我的问题是CodeIgniter是否创建了一个新对象,或者它是否允许实例持久化。这不是CodeIgniter的问题,PHP的核心和HTTP请求模型是每个请求都是独立的,没有任何东西将它们在会话外联系在一起,所以答案是没有PHP对象(成员)不要在请求之间自动保持。