iki sınıf ile php

3 Cevap

my sample is good or not? I have a good connection to the database, or too should be in the class?

Teşekkürler

<?php
mysql_connect('localhost','root','admin');
mysql_select_db('test');

class UserDisplay
{
    function getDisplayName()
    {
        $sql = 'select first_name, last_name, display_name from users where user_id = "3"';
        $results = mysql_query($sql);
        $row = mysql_fetch_array($results);
        $this->user_id = $user_id;

        return $this->user_id;
    }
}

class UserInsert

    function InsertName($name)
    {
        mysql_query("INSERT INTO Persons (first_name)VALUES ('".$name."')");
    }
}

$userD = new UserDisplay();
echo "User known as: " . $userD->getDisplayName() . "\n";

$userI = new UserInsert();
$userI->InsertName("Peter");
?>

3 Cevap

Muhtemelen sadece onlara işlevlerini yapma, sınıflar yerine onları sarma daha iyi olurdu. O kendi php dosyasının içine sonuncusu dışında hepsi, ayıklayın. Sen $user adlı ekran adını çıkarmak unuttum

// myFunctions.php
<?php
function connectDb() {
    mysql_connect('localhost', 'root', 'admin');
    mysql_select_db('test');
}

function closeDb() {
    mysql_close();
}

function displayName() {
    $sql = 'select first_name, last_name, display_name from users where user_id = "3"';
    $results = mysql_query($sql);
    $user = mysql_fetch_array($results);
    return $user['display_name'];
}

function insertFirstName($name) {
    mysql_query("INSERT INTO Persons (first_name)VALUES ('" . $name . "')");
}
?>

// index.php
<?php
require_once 'myFunctions.php';

connectDb();
echo "User known as: " . displayName() . "\n";
insertFirstName("Peter");
closeDb();
?>

Ama sınıfları kullanmakta ısrar ederseniz:

// User.php
<?php
class User {

    private function connectDb() {
        mysql_connect('localhost', 'root', 'admin');
        mysql_select_db('test');
    }

    private function closeDb() {
        mysql_close();
    }

    function displayName() {
        $this->connectDB();

        $sql = 'select first_name, last_name, display_name from users where user_id = "3"';
        $results = mysql_query($sql);
        $user = mysql_fetch_array($results);

        $this->closeDB();

        return $user['display_name'];
    }

    function insertFirstName($name) {
        $this->connectDB();
        mysql_query("INSERT INTO Persons (first_name)VALUES ('" . $name . "')");
        $this->closeDB();
    }
}
?>

// index.php
<?php
require_once 'User.php';

$user = new User;
echo "User known as: " . $user->displayName() . "\n";
$user->insertFirstName("Peter");
?>

Aslında kötü değil. db bağlantısı ve yakın dışarı soyutlanmış.

Daha sonra yapıcı veritabanından kullanıcı dizisini seçin ve bir sınıf değişkeni saklamak, tek bir kullanıcı sınıfa bu sınıfları birleştirmek gerekir.

O zaman sadece varsayılan bağlantıyı kullanmak değildir, böylece de ideal bu sınıfa mysql bağlantısı geçerdi. Mysql tüm fonksiyonlar bir "link tanımlayıcı" parametresi var ve bunu (MySQLi en OO sınıf gibi) bir OO arabirimini kullanarak değilse kullanmak iyi bir uygulama olarak kabul edilir.

Sizin örnek gerçekten ideal değildir. Sınıflar argümanlar / özellikler / veya yöntem çağrıları yoluyla onlara geçti ne dışında herhangi bir dış kaynaklara bağlıdır veya değiştirmek olmamalıdır.