INTRO
我正在努力更好地理解我对Php的了解,并使用类来更好地解析我的代码,所以这只是为了更好地理解而不是现实世界的解决方案。
附图
我正在调用一个我刚学会做的类的函数,但我想知道做一些简单任务的最佳方法,比如在IF语句中使用对象。
SCENARIO
例如,我正在设置我的类:
class user
{
// Get users ID
function get_user_id()
{
global $conn;
$sql = 'SELECT id FROM user';
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc() ){
echo $row['id'] . ', '; }
}
}
// Get users name
function get_user_name()
{
global $conn;
$sql = 'SELECT name FROM user';
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc() ){
echo $row['name'] . ', '; }
}
}
}
$userId = new user;
$userName = new user;
然后我在我的课程中初始化如下:
<?php $userId->get_user_id(); ?>
<?php $userName->get_user_name(); ?>
然后我想要执行简单的任务,比如根据ID的值显示用户,上面将返回4组结果4,所以id 1, 2, 3, 4
&amp; Dan, Andy, Ryan, Aran
所以我正在执行一个简单的IF
语句,如下所示:
if($userId > 1){
echo $userName;
} else {
echo 'not working';
}
但它返回“不工作”。 - 我只是想更好地理解如何以A作品和B最佳实践的方式使用这些功能。
答案 0 :(得分:4)
看起来你还没有理解OOP。
这些代码示例应该会给你一个介绍,但正如其他评论一样,请阅读OOP。我一开始就挣扎着,但坚持下去!
创建用户类
此类表示单个用户以及与用户关联的操作,将其视为蓝图。它应该只执行与用户相关的功能,它不应该“知道”其他任何事情。例如,数据库函数sholud可以在别处完成。
class User {
private $id;
private $name;
function __construct($array)
{
$this->id = $array['id'];
$this->name = $array['name'];
}
function getId()
{
return $this->id;
}
function getName()
{
return $this->name;
}
}
将所有用户加载到数组中
$sql = 'SELECT * FROM user';
$result = $conn->query($sql);
$users = [];
while ($row = $result->fetch_assoc() ){
$users[] = new User($row);
}
// this array now contains all your users as User objects
var_dump($users);
// echo all user's details
foreach($users as $user) {
echo $user->getId();
echo ' - ';
echo $user->getName();
echo "\r\n";
}
加载单个用户
$sql = 'SELECT * FROM user WHERE id = 1';
$result = $conn->query($sql);
if ($row = $result->fetch_assoc()) {
$user = new User($row);
} else {
exit('User ID does not exist');
}
// echo the user's ID and name
echo $user->getId();
echo ' - ';
echo $user->getName();
<强>资源的开发强>
拉拉斯特斯 - https://laracasts.com/series/object-oriented-bootcamp-in-php
搜索PHP OOP解释 - https://www.google.co.uk/search?q=php+oop+explained
答案 1 :(得分:3)
<?php
class user {
// Get users ID
function get_user_id() {
global $conn;
$data = array();
$sql = 'SELECT id FROM user';
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$data[] = $row['id'] . ', ';
}
}
return $data;
}
// Get users name
function get_user_name() {
global $conn;
$data = array();
$sql = 'SELECT name FROM user';
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$data[] = $row['name'] . ', ';
}
}
return $data;
}
}
$userId = new user;
$userName = new user;
// all user ids
$all_ids = $userId->get_user_id();
echo '<pre>';
print_r($all_ids);
// all user name
$all_name = $userId->get_user_name();
echo '<pre>';
print_r($all_name);`enter code here`
Check first response from both function after use if condition
答案 2 :(得分:2)
您正在将对象与1进行比较而不是函数get_user_id()返回的值。
所以而不是
<?php $userId->get_user_id(); ?>
<?php $userName->get_user_name(); ?>
尝试
<?php $id=$userId->get_user_id(); ?>
<?php $name= $userName->get_user_name(); ?>
然后放入你的条件
if($id > 1){
echo $name;
} else {
echo 'not working';
}
我建议你用return语句替换echo。
答案 3 :(得分:2)
将您的班级称为对象
$userid = user();
$username = user();
你也可以尝试这样的事情
class user
{
// Get users ID
function get_user_id($id = "")
{
global $conn;
// check if id is empty or not
if(!empty($id)) {
$sql = 'SELECT id FROM users WHERE id = '.$id;
}else{
$sql = 'SELECT id FROM users';
}
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc() ){
echo $row['id'] . ', '; }
}
}
// Get users name
function get_user_name($name = "")
{
global $conn;
// check if name is empty or not
if(!empty($name)) {
$sql = 'SELECT name FROM user WHERE name = '.$name;
}else{
$sql = 'SELECT name FROM user';
}
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc() ){
echo $row['name'] . ', '; }
}
}
}
$userId = new user();
$userName = new user();
$userId->get_user_id(1);
$userName->get_user_name();
echo $userId;
echo $userName;
请确保在使用前清理ID和名称
答案 4 :(得分:0)
请同时使用get_user_id,get_user_name方法
返回$row = $result->fetch_assoc();
因此,它会在$userId
,$userName
中显示,您可以访问它。
现在你没有返回任何内容,因此$user_id
具有null
值,所以它始终处于其他状态。
示例强>
function get_user_id()
{
global $conn;
$sql = 'SELECT id FROM user';
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$value = '';
while ($row = $result->fetch_assoc() ){
$value .= $row['id'] . ', ';
}
return $value;
}
}