首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两次使用的PHP类参数

两次使用的PHP类参数
EN

Stack Overflow用户
提问于 2015-02-15 02:20:52
回答 2查看 151关注 0票数 1

我是新的OOP,我正在切换我所有的网站代码到它!我目前正在编写一个获取用户信息的类,并将最终更新它。

我使用的代码如下:

代码语言:javascript
复制
<?php

    require("C:\wamp\www\postin'\db_connection.php");
    session_start();

    class user {

        public function __construct($userid, $connection, $information) {
            $this->userid = $userid;
            $this->connection = $connection;
            $this->information = $information;
        }   

        public function user_information($userid, $connection, $information) {
            $query = "SELECT * FROM users WHERE id = :id";
            $params = array(':id' => $userid);
            try{
                $stmt = $connection->prepare($query);
                $result = $stmt->execute($params);
            }                               
            catch(PDOException $ex){
                echo ("Failed to run query: " . $ex->getMessage());
            }                       
            $columns = $stmt->fetch();
            return $columns["$information"];
        }

    }

    $username = new user($_SESSION["logged_in"], $connection, "username");
    echo $username->user_information($_SESSION["logged_in"], $connection, "username");
?>

现在,正如您在最后两行代码中所看到的(最后一行代码),我必须使用参数两次。基本上,第一个参数表示ID是什么,第二个参数表示什么是$connection,第三个参数是我想从数据库中获取的内容。那我做错什么了?我是不是定义了一些我不需要的东西?

编辑

以下内容是否也有效?

代码语言:javascript
复制
<?php

require("C:\wamp\www\postin'\db_connection.php");
session_start();

class user {

    public function user_information($userid, $connection, $information) {
        $query = "SELECT * FROM users WHERE id = :id";
        $params = array(':id' => $userid);
        try{
            $stmt = $connection->prepare($query);
            $result = $stmt->execute($params);
        }                               
        catch(PDOException $ex){
            echo ("Failed to run query: " . $ex->getMessage());
        }                       
        $columns = $stmt->fetch();
        return $columns["$information"];
    }

}

$username = new user();
echo $username->user_information($_SESSION["logged_in"], $connection, "username");
?>

就像这是正确的,还是错的.?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-15 02:27:22

如果user类拥有它作为数据成员所需的所有信息,那么user_information就不需要接受任何参数:

代码语言:javascript
复制
public function user_information() {
    $query = "SELECT * FROM users WHERE id = :id";
    $params = array(':id' => $this->userid);
    try{
        $stmt = $this->connection->prepare($query);
        $result = $stmt->execute($params);
    }                               
    catch(PDOException $ex){
        echo ("Failed to run query: " . $ex->getMessage());
    }                       
    $columns = $stmt->fetch();
    return $columns[$this->information];
}
票数 2
EN

Stack Overflow用户

发布于 2015-02-15 02:28:30

由于你有很多关于一个课程的工作方式和OOP的问题,我会尝试给你一个小的方向。没有标准的方法来建设你的班级。你是决定什么去向的人,就属于这个类的东西和需要注入的东西而言。这只是告诉你,你不能固步自封。你需要对它有一个感觉,并建立一个逻辑。我选了你的课,并重新编写了一些评论。希望这会对你有所帮助。祝好运!

代码语言:javascript
复制
    <?php

require ("C:\wamp\www\postin'\db_connection.php");
session_start();

class user {

    public $dbconnection;

    public function __construct($connection) {
        /**
         * Your user class interacts with the database.
         * Inject the connection here and set your
         * global class variable.
         */
        $this -> dbconnection = $connection;
    }

    public function user_information($userid, $column) {
        /**
         * The userid and column are specific for this
         * method action. No need to set these variables
         * in the global scope of the class.
         */

        $query = "SELECT" . $column . " FROM users WHERE id = :id";

        $params = array(':id' => $userid);
        try {
            $stmt = $this -> dbconnection -> prepare($query);
            $stmt -> execute($params);
        } catch(PDOException $ex) {
            echo("Failed to run query: " . $ex -> getMessage());
        }
        $result = $stmt -> fetch();

        return $result;
    }

}

$username = new user($connection);
echo $username -> user_information($_SESSION["logged_in"], $information);
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28522426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档