Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Создание классов в Php (https://forum.antichat.xyz/showthread.php?t=29303)

steamer 17.12.2006 14:34

Создание классов в Php
 
Есть вопрос по классам ПХП (кстати не помню кто, но кто-то грозился накатать статью по классам, поставил бы +). Есть к примеру класс:

PHP код:

class db{
    var 
$mysql_host;
    var 
$db_name;
    var 
$db_user;
    var 
$db_pass;
    var 
$table_name;
    function 
db_open($mysql_host$db_name$db_user$db_pass){
        @
$db_con=mysql_connect($mysql_host$db_user$db_pass);
        @
mysql_select_db($db_name$db_con);
        return 
$db_con;
    }


все работает, только не пойму зачем нужно вначале класса определять переменные, когда и без них все работает. Просто в книжке даны примеры, а зачем это и как влияет на работу класса не сказано.

GreenBear 17.12.2006 14:36

http://ru.php.net/manual/ru/ref.classobj.php

VampiRUS 17.12.2006 15:07

Нужны наверно для того чтоб к ним можно было обратиться.

EXSlim 17.12.2006 16:32

В твоем примере, свойства могут быть использованы и в других методах класса. При создании обьекта их определяеш и всё.

Цитата:

<?
require_once("class.php");
$obj = new DB;
$obj->host = "localhost";
$obj->login = "root";
$obj->pass = "blablabla";
$obj->connect();
$obj->some_ahother()...
?>
В твоем примере от внутренних дублирующих можно отказаться.

Цитата:

<?php

class DB {

var $host;
var $login;
var $pass;

function connect() {
//$this - ссылка на текущий класс
@mysql_connect($this->host,$this->login,$this->pass) or die("Cant connect");}}

function some_another(){
//Эта ф-ция может также использовать свойства
}

?>

_Great_ 17.12.2006 17:05

class db{
var $mysql_host;
var $db_name;
var $db_user;
var $db_pass;
var $table_name;
function db_open($mysql_host, $db_name, $db_user, $db_pass){
@$db_con=mysql_connect($mysql_host, $db_user, $db_pass);
@mysql_select_db($db_name, $db_con);
return $db_con;
}
}

они не нужны в том классе, код которого ты дал.

steamer 20.12.2006 13:20

Короче я понял примерно так: если я хочу в функциях в одном классе использовать эту переменную (типа как глобальную для класса), то я ее определяю как var и затем не передаю в функцию типа
PHP код:

my_function ($id

, а пишу что типа
PHP код:

function my_function(){
$this->id;


Возникает второй вопрос.
Если я расширяю класс
PHP код:

class extends {
   function 
1_from_class_1(){
    
$s=myfunction_from_class_2();
   }


Т.Е. использовать функции из второго класса включая их в первый.

SMiX 20.12.2006 22:47

перехрдим на PHP5 и юзаем модификаторы private, protected и public


Время: 15:34