Heim  >  Artikel  >  Backend-Entwicklung  >  对象传递那种方式好?该如何处理

对象传递那种方式好?该如何处理

WBOY
WBOYOriginal
2016-06-13 13:39:11796Durchsuche

对象传递那种方式好?
我原来学JAVA的,因为要用PHP做一个东西。MVC:模式下。代码:
UserInfoAction.class.php   :
public   function   index($userid){
        $userdao   =   new   UserDao();
        $userVo=   $userdao-> findUserById($userid);
       
        跳转到:   UserInfo.php

}
如果是JAVA就很简单了:   pagecontext.setAttribute( 'userVo ',userVo);
pagecontext.forward(UserInfo.jsp);
UserInfo.jsp页面只要:userVo   uservo   =   request.getAttribute( 'userVo ');   就能拿到那个对象了。
***************************************************************************************
看了一下:PHP页面间对象传递。大概有这么几种。
1.对象序列化   $userVoStr   =   serialize($userVo);     $_SESSION[ 'userVo ']=   $userVoStr;   (Session鸭梨过大)
2.通过URL传递   $url   =   UserInfo.php?userVo=urlencode($userVoStr);   header(   "Location:   $url "   );   (可能超长)
3.还有通过表单Form隐藏域传递的VO对象。(这个估计速度不行,而且多此一举)。

大量数据:如ListUsers应该怎么传递给另一个页面。如果采用Session,那么Session是否要传递后手动清空。在JSP中,Session一般不会用来做大量数据的页面传递。

------解决方案--------------------

探讨
……
2.通过URL传递 $url = UserInfo.php?userVo=urlencode($userVoStr); header( "Location: $url " ); (可能超长)
……

------解决方案--------------------
你关心的问题是普遍的,php 并不生存于真空。所以他同样需要对当时所有可能的情况作出应对
不然他也就无法生存下去。虽然应对方式可能不尽人意

在你描述的情况下,php 提供的首选方案是 session,对应
 pagecontext.setAttribute( 'userVo ',userVo); 
的是
session_start();
$_SESSION['userVo'] = $userVo;

对应
userVo uservo = request.getAttribute( 'userVo ');
的是
include '类 UserDao 的定义文件名';
session_start();
$userVo = $_SESSION['userVo'] ;

而 serialize、unserialize 只是作为备选方案
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn