Jump to content
  • 0

Про классы


3ABAPKA
 Share

Question

Вот такой код:

class O_Db extends DB_Sql {

var $User;
var $Password;
function func_O_Db_vars(){

if((!isset($_SESSION["sate"])) || ($_SESSION["sate"]=="sate")){
$this-> User = "User";
$this-> Password = "Password";
}else {
$this-> User = "User";
$this-> Password = "Password";
}

}



}

Необходимо присвоить значения переменным в зависимости от условия.

1. Правильно ли написан код?

2. Существует ли возможность присвоения переменным значений внутри класса в зависимости от выполнения условия!

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Данные из переменных не попадают из класса O_Db в класс DB_Sql,

Т.е. класс DB_Sql не получает никакой информации о юзере и пароле, а пустыми они быть не могут

Как исправить?

Edited by 3ABAPKA
Link to comment
Share on other sites

  • 0
Конечно не попадают, вы же их объявляете только в классе O_Db.

Чтобы они были в классе DB_Sql, вам надо в нём объявить их и потом так же задавать в O_Db.

не надо!!! потому что если написать так:

class O_Db extends DB_Sql {
var $User = "User";
var $Password = "Password";

}

Все нормально работает

или я не прав?

Link to comment
Share on other sites

  • 0

O_Db::User и O_Db::Password для получения параметров

Работать не будет!

vvsh, а есть у тя способ, чтоб не трогать класс DB_Sql.

Суть такая, я обратился к O_Db, а он отработал условие (или обратился к другому классу, которое отработает условие) и дополнил класс DB_Sql, как если б было написано:

var $User	 = "User";

.

Чтоб класс DB_Sql вообще не трогать (он Session Management for PHP3).

забыл сказать = прицеплено php5, php4 в том варианте, в котором их можно заставить работать вместе.

Edited by 3ABAPKA
Link to comment
Share on other sites

  • 0

Вы понимаете что такое объект? Когда вы создаёте объект класса O_Db (путём вызова $obj=new O_Db), то присвоение в методе $this->$User="value" присваивает значение $obj->$User. Если у вас еще где-то есть $obj2=new DB_Sql, то присвоение каких-то значений переменным объекта $obj никак не затронет объект $obj2. Вы, походу, плохо понимаете что такое класс и что такое объект. И не надо писать в личку - я и так просматриваю форум и отвечаю по мере возможности. Если возможности нет или я считаю, что отвечать бесполезно, то не буду отвечать в любом случае.

Link to comment
Share on other sites

  • 0
Вы понимаете что такое объект? Когда вы создаёте объект класса O_Db (путём вызова $obj=new O_Db), то присвоение в методе $this->$User="value" присваивает значение $obj->$User. Если у вас еще где-то есть $obj2=new DB_Sql, то присвоение каких-то значений переменным объекта $obj никак не затронет объект $obj2. Вы, походу, плохо понимаете что такое класс и что такое объект.
Наверное я зря обозначил переменные как User и Password ......

Объект не будет вызываться для присвоения значений как User и Password, он предназначен для оформления SQL запросов через класс DB_Sql, хотя DB_Sql никогда в коде не вызывается (не создается), а создаются новые объекты класса O_Db, который всего лишь дополняет (расширяет) класс DB_Sql (судя по описанию) определенными значениями. Пользователям не дано право самостоятельно изменять данные переменных User и Password, они водятся вручную, в коде в классе.

Другими словами есть какой то класс DB_Sql - он что-то делает.

И есть еще класс O_Db, который содержит в себе DB_Sql+пара своих значений (например, если в DB_Sql User="" и Password="", то в O_Db - User="значение" и Password="значение".)

Вот по этому надо поручить классу O_Db решать вопрос какие данные присвоить User и Password, а не где-то в коде создать объект и присваивать значения.

Че я пытаюсь сделать=хочу на одну ЦМС, на один домен, прицепить 2 БД, это похоже на переключение между старой и новой версией сайта. Вообще ничего не должно измениться кроме содержимого, а содержимое естественно это две разные БД. Именно поэтому мне не выгодно дергать и менять класс DB_Sql и O_Db должен остаться, поскольку "старая версия сайта" написана на обращениях к нему. Надо только заставить его думать, если условие верно, то одна БД, если нет - другая БД, короче надо, чтоб он выбирал БД.

Link to comment
Share on other sites

  • 0

Задавать так значения переменным при описании класса как минимум неправильно. Надо разделять "модель" и "контроллер". По-моему, вы занимаетесь какой-то фигнёй. И, кстати, есть еще функция __construct() - можно ей воспользоваться для присвоения значений переменным.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy