2016-12-16 4 views
3

INTROКак использовать функции PHP в IF заявлении

Я пытаюсь лучше понять мое знание Php и использование классов лучше prganise моего кода, так что это просто упражнение для лучшего понимания, а не реального мирового решения.

КРАТКОЙ

Я звоню в зависимости от класса, который я только что научился делать, но я хочу знать, что лучший способ сделать что-то простые задачи, как использовать объект в операторе IF.

СЦЕНАРИЙ

Так, например, я устанавливаю мои классы, как так:

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(); ?> 

, а затем я желая выполнить простую задачу, например показать пользователя на основе значения их идентификатора, приведенное выше вернет 2 набора результатов из 4, поэтому id 1, 2, 3, 4 & Dan, Andy, Ryan, Aran

так я совершаю простой IF заявление так:

if($userId > 1){ 
    echo $userName; 
} else { 
    echo 'not working'; 
} 

Но это возвращает «не работает» - я просто хотел, чтобы лучше понять, как использовать функции таким образом, что А работ и лучшей практики.

+0

ваш $ USERID это объект, как вы можете это повторить? Что вы хотите, пожалуйста, укажите – rahulsm

+0

Является ли '$ userId' объектом класса' user'? –

+0

Вам нужно «вернуть» значение из вашей функции вместо 'echo'. Однако ваш код не имеет смысла получать 'user_id' и' username'? Для кого вы его получаете? вы хотите получить всю информацию о пользователе? – Tiger

ответ

4

Это doen't выглядеть, как вы поняли ООП только пока.

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

Создать класс пользователя
Этот класс представляет одного пользователя и действия, связанные с пользователем, думать о нем, как синяя печать. Он должен выполнять только функции, связанные с пользователем, он не должен «знать» о чем-либо еще. Например, функции базы данных можно выполнить в другом месте.

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(); 

Ресурсы
Laracasts - https://laracasts.com/series/object-oriented-bootcamp-in-php
Поиск PHP OOP объяснен - ​​https://www.google.co.uk/search?q=php+oop+explained

+0

Я очень ценю это Стив, и я рад, что я не единственный! – danjbh

0

В обоих get_user_id, get_user_name методы, пожалуйста, возвращение $row = $result->fetch_assoc(); так, он будет ценить приходит в $userId, $userName, и вы можете получить доступ к нему.

прямо сейчас вы ничего не возвращаете, поэтому $user_id имеет значение , поэтому оно всегда переходит в другое состояние.

Пример

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; 
     } 
    } 
+0

Это не правда, я возвращаю результаты, но не в аргументе, который терпит неудачу. – danjbh

+0

Я думаю, что это поможет вам проверить его снова –

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'; 
} 

Я предлагаю вам заменить эхо с обратным утверждением.

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; 

пожалуйста, убедитесь, что вы дезинфицировать идентификатор и имя перед использованием

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