Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

17.12.2006, 14:34
|
|
Познающий
Регистрация: 03.05.2006
Сообщений: 82
Провел на форуме: 219818
Репутация:
10
|
|
Создание классов в 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;
}
}
все работает, только не пойму зачем нужно вначале класса определять переменные, когда и без них все работает. Просто в книжке даны примеры, а зачем это и как влияет на работу класса не сказано.
|
|
|

17.12.2006, 14:36
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
http://ru.php.net/manual/ru/ref.classobj.php
|
|
|

17.12.2006, 15:07
|
|
Участник форума
Регистрация: 31.12.2005
Сообщений: 231
Провел на форуме: 1106266
Репутация:
366
|
|
Нужны наверно для того чтоб к ним можно было обратиться.
|
|
|

17.12.2006, 16:32
|
|
Познающий
Регистрация: 09.10.2006
Сообщений: 92
Провел на форуме: 347686
Репутация:
87
|
|
В твоем примере, свойства могут быть использованы и в других методах класса. При создании обьекта их определяеш и всё.
<?
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(){
//Эта ф-ция может также использовать свойства
}
?>
|
|
|

17.12.2006, 17:05
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
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;
}
}
они не нужны в том классе, код которого ты дал.
|
|
|

20.12.2006, 13:20
|
|
Познающий
Регистрация: 03.05.2006
Сообщений: 82
Провел на форуме: 219818
Репутация:
10
|
|
Короче я понял примерно так: если я хочу в функциях в одном классе использовать эту переменную (типа как глобальную для класса), то я ее определяю как var и затем не передаю в функцию типа , а пишу что типа
PHP код:
function my_function(){
$this->id;
}
Возникает второй вопрос.
Если я расширяю класс
PHP код:
class 1 extends 2 {
function 1_from_class_1(){
$s=myfunction_from_class_2();
}
}
Т.Е. использовать функции из второго класса включая их в первый.
|
|
|

20.12.2006, 22:47
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
перехрдим на PHP5 и юзаем модификаторы private, protected и public
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|