Я действительно новичок в ООП и не очень хорошо говорю по-английски, поэтому, если мой вопрос тупой, извините.
Я думал, что понимаю упс, но когда я начинаю кодировать с ним, это работает, но не чувствует себя хорошо.
следующий код — моя первая попытка, я задам вопрос после них. (Я вырезал коды базы данных, но, как я уже сказал, программа работает.)
// class.Post.inc
class Post {
private $_db;
private $_postId;
private $_title;
private $_creatorId;
public function __construct() {
$this->_db = Database::getInstance ()->getConnection ();
}
public function getApost($postId = 0) {
if($postId){
/* get the post data from database(including user_id) and put them in the instance variables */
$this->_postId = $row ['post_id'];
$this->_title = $row ['title'];
$this->_creatorId = $row ['user_id'];
}
}
public function getCreator() {
$creator = new User ();
return $creator->getUserObject ( $this->_creatorId );
}
public function getPostId() {
return $this->_postId;
}
public function getTitle() {
return $this->_title;
}
}
//class.User.inc
class User {
private $_db;
private $_userId;
private $_name;
public function __construct() {
$this->_db = Database::getInstance ()->getConnection ();
}
public function getUserObject($userId = null) {
if ($userId) {
/* read data from database and put them in the instance variables */
$this->_userId = $row ['user_id'];
$this->_name = $row ['name'];
return $this;
}
return false;
}
public function getUserId() {
return $this->_userId;
}
public function getName() {
return $this->_name;
}
}
//index.php
spl_autoload_register ( function ($className) {
require_once 'classes/class.' . $className . '.inc';
} );
$post = new Post ();
$post->getApost(1);
$creator = $post -> getCreator();
echo $post->getPostId () . '<br>';
echo $post->getTitle () . '<br>';
echo $creator->getName () . '<br>';
мои вопросы:
Многое можно сказать о вашем коде. Я мог бы написать, что ты сделал неправильно несколько часов, но ты не просил об этом, поэтому я отвечу на твои первые вопросы.
Один совет в конце:
Я часто вижу новых разработчиков, которые изобретают велосипед, и это именно то, что вы делаете. Существуют великолепные и полнофункциональные библиотеки, которые экономят ваше время на написание ваших собственных. Например Учение ОРМ. Или намного проще Nextras ORM. Кривая обучения может показаться высокой, но я гарантирую, это того стоит.
Других решений пока нет …