在php类的方法之间传递变量

时间:2012-09-29 10:46:21

标签: php

  

可能重复:
  passing variable from one method to another in a php class

什么是在类的方法中传递特定变量的最佳方法,我尝试通过以下方式,但它没有工作.Wot可以通过它的其他可能性吗?plz suggest.thnks

itried传递变量$ picid;但它没有通过。

class photos
{

    var $pid;
    function showactivity(){

        $sql = mysql_query("SELECT * FROM activity ");
        while ($row = mysql_fetch_array($sql)) {
            $picid= $row['picid'];
            $this->pid=$picid;
        }
    }

    function picname(){
        echo $this->pid;
    }
}

$photo=new photos();

并且在另一个文件中我调用了变量和方法但是,它没有显示任何结果

<?php $photo->picname();    ?>   

以及

<?php $photo->pid; ?>

4 个答案:

答案 0 :(得分:0)

我会改变方法picname:

function picname(){
    return $this->pid;
}

然后像这样称呼它:

<?php echo $photo->picname(); ?>

答案 1 :(得分:0)

你必须像这样使用你的课程:

$photo = new photos();
$photo->showactivity();
$photo->picname();

我建议删除你的picname()函数中的echo,然后让方法返回pic。另外我会把$ pid私有化。获得一个图片时,您必须不循环查看所有查询记录。

你的课程看起来像这样:

class photos
{
    private $pid;

    function showactivity(){
        $sql = mysql_query("SELECT * FROM activity ");
        $row = mysql_fetch_array( $sql )); 
        $this->pid = $row['picid'];
    }

    function picname(){
        return $this->pid;
    }
}

用法:

$photo = new photos();
$photo->showactivity();
echo $photo->picname();

注意:您的班级缺少错误处理,并使用已弃用的mysql * 函数

答案 2 :(得分:0)

如果你只想获得$ picid的值,你可以从第一个函数返回。当您可以从第一个函数获取值时,您的第二个函数是不必要的。

class photos
{
   function showactivity(){

        $sql = mysql_query("SELECT * FROM activity ");
        while ($row = mysql_fetch_array($sql)) {
            $picid= $row['picid'];
            return $picid;
        }
    }
  }

$photo=new photos();
$act_id = $photos->showactivity();  

更新

class photos
{

    var $pid;
    function showactivity(){

        $sql = mysql_query("SELECT * FROM activity ");
        while ($row = mysql_fetch_array($sql)) {
            $picid= $row['picid'];
            $this->pid=$picid;
            return null;
        }
    }

    function picname(){
        echo $this->pid;
    }
}

$photo=new photos();
$photos->showactivity();
$act_id = $photo->picname();

但我仍然建议你选择第一种方法

<强> working demo

答案 3 :(得分:0)

试试这个,

class photos
{
    private $pid;

    function showactivity(){
     $sql = mysql_query("SELECT * FROM activity ");
     if($sql){
      $row = mysql_fetch_array( $sql )); 
      echo "From first function-->".$this->pid = $row['picid']; //correction
     }
     else{
      echo mysql_error();
     }
    }

    function picname(){
     return $this->pid;
    }
}

并检查结果..