代码封装php,代码封装 英文

发布时间:2023-01-08

本文目录一览:

  1. PHP中,类的封装,调用问题
  2. vs2010怎么把php代码封装成安装程序
  3. 什么是php中的封装
  4. [PHP 继承、封装、多态](#PHP 继承、封装、多态)
  5. 求PHP数据库封装类操作代码
  6. PHP函数封装!

PHP中,类的封装,调用问题

class Page {
    function 分页函数(参数) {
        $perNumber = 2;
        $page = $_GET['page'];
        $count = mysql_query("select count(*) from people");
        $rs = mysql_fetch_array($count);
        $totalNumber = $rs[0];
        $totalPage = ceil($totalNumber / $perNumber);
        if (!isset($page)) {
            $page = 1;
        }
        $startCount = ($page - 1) * $perNumber;
        $result = mysql_query("select * from people limit $startCount,$perNumber");
        $num = mysql_numrows($result);
        for ($i = 0; $i < $num; $i++) {
            $a = mysql_result($result, $i, "id");
            $b = mysql_result($result, $i, "name");
            $c = mysql_result($result, $i, "age");
            echo "<br />" . $a . "<br />" . $b . "<br />" . $c . "<br />";
        }
    }
}

vs2010怎么把php代码封装成安装程序

  1. VS2010新建一个安装包制作项目。(取名为“素材包”)
  2. 素材包上右击 → Add → Assembly,选定自己要安装的可执行文件。然后相关程序集都会被自动加载进去,以后就是要将没有加载的程序补充进去。
  3. 添加需要添加的文件,在 File System 中的 App Folder 中添加文件。
  4. 卸载:在系统中加载 msiexec.exe,然后创建快捷方式,在 Arguments 中填上 /x{produce NO}(其中 /x 只是 msiexec.exe 的一个卸载参数)。
  5. 自定义函数:这个函数中能实现很多功能,比如和目标计算机互动等。在 Solution 中 Add 一个 inno.cs(安装工程),其实就是一个继承自安装程序的类。将此函数设定为主输出以后,自定义可以参考。
  6. 一个比较恼火的问题就是自动加载路径了,这中间有详细的介绍。

什么是php中的封装

封装是 PHP 面向对象的其中一个特性,将多个可重复使用的函数封装到一个类里面。在使用时直接实例化该类的某一个方法,获得需要的数据。 如果是私有的方法和属性值,外部无法访问,具有一定的保护作用。

面向对象之封装示例

class A {
    public $name = '老王';
    // protected $name = '老王';
    // private $name = '老王';
    // 自己访问
    public function saya() {
        return $this->name;
    }
}
// 实例化对象
$b = new A;
// public:外部、家族、自己都可以访问
// protected:家族和自己都可以访问,外部无法访问
// private:自己可以访问,外部和家族都无法访问
echo '外部访问:' . $b->name . '<br>'; // 如果是私有的,访问不了
echo '家族访问:' . $b->sayb() . '<br>';
echo '自己访问:' . $b->saya() . '<br>';

PHP 继承、封装、多态

  • 子类只能继承父类的非私有属性。
  • 子类继承父类后,相当于将父类的属性和方法 copy 到子类,可以直接使用 $this 调用该属性。
  • PHP 只能单继承,不支持一个类继承多个类。但是一个类可以进行多层继承。 类实现封装是为了不让外面的类随意修改一个类的成员变量,所以在定义一个类的成员的时候,我们使用 private 关键字设置这个成员的访问权限只能被这个类的其他成员方法调用,而不能被其他类中的方法调用,即通过本类中提供的方法来访问本类中的私有属性。
  • 所以在该类中我们会提供一个访问私有属性的方法。
  • 然后我们一般会定义两个方法来实现对一个变量的操作,即 __get()__set() 方法。 一个类被多个子类继承,如果这个类的某个方法,在多个子类中表现出不同的功能,我们称这种行为为多态(同一个类的不同子类表现出不同的形态)。
  • 子类继承父类
  • 子类重写父类的方法
  • 父类引用指向子类对象

求PHP数据库封装类操作代码

<?php
class MySQL {
    private $host; // 服务器地址
    private $name; // 登录账号
    private $pwd; // 登录密码
    private $dBase; // 数据库名称
    private $conn; // 数据库链接资源
    private $result; // 结果集
    private $msg; // 返回结果
    private $fields; // 返回字段
    private $fieldsNum; // 返回字段数
    private $rowsNum; // 返回结果数
    private $rowsRst; // 返回单条记录的字段数组
    private $filesArray = array(); // 返回字段数组
    private $rowsArray = array(); // 返回结果数组
    private $charset = 'utf8'; // 设置操作的字符集
    private $query_count = 0; // 查询结果次数
    static private $_instance; // 存储对象
    // 初始化类
    private function __construct($host = '', $name = '', $pwd = '', $dBase = '') {
        if ($host != '') $this->host = $host;
        if ($name != '') $this->name = $name;
        if ($pwd != '') $this->pwd = $pwd;
        if ($dBase != '') $this->dBase = $dBase;
        $this->init_conn();
    }
    // 防止被克隆
    private function __clone() {}
    public static function getInstance($host = '', $name = '', $pwd = '', $dBase = '') {
        if (FALSE == (self::$_instance instanceof self)) {
            self::$_instance = new self($host, $name, $pwd, $dBase);
        }
        return self::$_instance;
    }
    public function __set($name, $value) {
        $this->$name = $value;
    }
    public function __get($name) {
        return $this->$name;
    }
    // 链接数据库
    function init_conn() {
        $this->conn = @mysql_connect($this->host, $this->name, $this->pwd) or die('connect db fail !');
        @mysql_select_db($this->dBase, $this->conn) or die('select db fail !');
        mysql_query("set names " . $this->charset);
    }
    // 查询结果
    function mysql_query_rst($sql) {
        if ($this->conn == '') $this->init_conn();
        $this->result = @mysql_query($sql, $this->conn);
        $this->query_count++;
    }
    // 取得字段数
    function getFieldsNum($sql) {
        $this->mysql_query_rst($sql);
        $this->fieldsNum = @mysql_num_fields($this->result);
    }
    // 取得查询结果数
    function getRowsNum($sql) {
        $this->mysql_query_rst($sql);
        if (mysql_errno() == 0) {
            return @mysql_num_rows($this->result);
        } else {
            return '';
        }
    }
    // 取得记录数组(单条记录)
    function getRowsRst($sql, $type = MYSQL_BOTH) {
        $this->mysql_query_rst($sql);
        if (empty($this->result)) return '';
        if (mysql_error() == 0) {
            $this->rowsRst = mysql_fetch_array($this->result, $type);
            return $this->rowsRst;
        } else {
            return '';
        }
    }
    // 取得记录数组(多条记录)
    function getRowsArray($sql, $type = MYSQL_BOTH) {
        !empty($this->rowsArray) ? $this->rowsArray = array() : '';
        $this->mysql_query_rst($sql);
        if (mysql_errno() == 0) {
            while ($row = mysql_fetch_array($this->result, $type)) {
                $this->rowsArray[] = $row;
            }
            return $this->rowsArray;
        } else {
            return '';
        }
    }
    // 更新、删除、添加记录数
    function uidRst($sql) {
        if ($this->conn == '') {
            $this->init_conn();
        }
        @mysql_query($sql);
        $this->rowsNum = @mysql_affected_rows();
        if (mysql_errno() == 0) {
            return $this->rowsNum;
        } else {
            return '';
        }
    }
    // 返回最近插入的一条数据库的id值
    function returnRstId($sql) {
        if ($this->conn == '') {
            $this->init_conn();
        }
        @mysql_query($sql);
        if (mysql_errno() == 0) {
            return mysql_insert_id();
        } else {
            return '';
        }
    }
    // 获取对应的字段值
    function getFields($sql, $fields) {
        $this->mysql_query_rst($sql);
        if (mysql_errno() == 0) {
            if (mysql_num_rows($this->result) > 0) {
                $tmpfld = @mysql_fetch_row($this->result);
                $this->fields = $tmpfld[$fields];
            }
            return $this->fields;
        } else {
            return '';
        }
    }
    // 错误信息
    function msg_error() {
        if (mysql_errno() != 0) {
            $this->msg = mysql_error();
        }
        return $this->msg;
    }
    // 释放结果集
    function close_rst() {
        mysql_free_result($this->result);
        $this->msg = '';
        $this->fieldsNum = 0;
        $this->rowsNum = 0;
        $this->filesArray = '';
        $this->rowsArray = '';
    }
    // 关闭数据库
    function close_conn() {
        $this->close_rst();
        mysql_close($this->conn);
        $this->conn = '';
    }
    // 取得数据库版本
    function db_version() {
        return mysql_get_server_info();
    }
}

PHP函数封装!

你传入的 SQL 不应该那样传,可用性太低,函数或方法应该传入变量,或者说可变的值。上代码,不懂的问:

/* 封装函数 */
$arr = $_POST;
// $sql = "INSERT INTO ui234_user (username,password,u_name,u_time) VALUES (?,?,?,?)";
$table_name = "ui234_user";
$field_arr = array('username', 'password', 'u_name', 'u_time');
insert($arr, $table_name, $field_arr);
function insert($arr, $table_name, $field_arr) {
    $sql = 'INSERT INTO ' . $table_name . ' (';
    $field_name = ''; // 名称
    $field_value = ''; // 值
    $field_post = ''; // post取值
    /* 拼装字段 */
    foreach ($field_arr as $key => $value) {
        if ($key == count($field_arr) - 1) {
            $field_name .= $value;
            $field_value .= '?';
            $field_post .= '$arr["' . $field_name . '"]';
        } else {
            $field_name .= $value . ',';
            $field_value .= '?,';
            $field_post .= '$arr["' . $value . '"],';
        }
    }
    $sql .= $field_name . ') VALUES (' . $field_value . ');';
    $mysqli = connect();
    $stmt = $mysqli->prepare("{$sql}");
    $exe_str = '$stmt->bind_param("ssss", ' . $field_post . ');';
    // 输出字符串结果
    echo $sql . '<hr/>';
    echo $exe_str;
    // 然后用 eval 执行字符串代码
    eval($exe_str); // 相当于是:$stmt->bind_param('ssss',$arr['username'],$arr['password'],$arr['u_name'],$arr['u_time']);
    $stmt->execute();
}