OO PHP Class yöntem değişkenler değiştirildi?

0 Cevap php

Ben tür I (Bu nedeniyle PHP. Net benim mola belki var) daha önce gelip hiç biri olan garip bir durum ... yaşıyorum. Çerçeve CodeIgniter'ı kullanma.

Peki burada durum ... Ben (aşağıda gösterilmiştir) vb kullanıcı adı / şifre / e-posta içeren kullanıcı nesnesi .. gibi davranan bir kullanıcı sınıfı var:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    include_once(APPPATH . INTERFACE_PATH . 'IUser' . EXT);
    include_once(APPPATH . CLASS_PATH . 'Encryption' . EXT);

    final class User extends Encryption implements IUser
    {
        private $_username;
        private $_password;
        private $_email;

        public function SetUserData(StdClass $data)
        {
            $this->_username = $data->Username;
            $this->_password = self::EncryptPassword($data->Password);
            $this->_email = $data->Email;
        }

        public function Username()
        {
            return (string)$this->_username;
        }
        public function Password()
        {
            return (string)$this->_password;
        }
        public function Email()
        {
            return (string)$this->_email;
        }
    }

?>

Şimdi heyecan verici bir şey şimdiye kadar ... Bu vb değerlere sahip Ancak bir kez .. bir başka yerde bu sınıfı kullanarak düşünmek gerekir basit olacak ... DOHHH iyi değil

KuIIanıIıyor İşte burada:

<?php
#some class/methods up here...

    public function AddNewUser(User $user) #here is where it's passed in...
    {
        print '<pre>';
        print_r($user);  # my output of this is shown in email.
        print '</pre>';
        return;

        $user->Username = $this->db->escape($user->Username);
        $user->Password = $this->db->escape($user->Password);
        $user->Email    = $this->db->escape($user->Email);

        $sql   = 'CALL sp_RegisterUser(' . $user->Username . ', ' . 
                    $user->Password . ', ' . $user->Email . ', '  
                    . (int)((isset($user->RefId) && is_numeric($user->RefId)) 
                    ? $user->RefId : 0) . ', @usersId);';
        $query = $this->db->query($sql);

        if($query)
        {
            $sql   = "SELECT @usersId;";
            $query = $this->db->query($sql);

            if($query->num_rows())
            {
                $sqlData = $query->result();
                $query->free_result();

                foreach($sqlData[0] as $k => $v)
                {
                    $array[$k] = $v;
                }

                return (int)$array['@usersId'];
            }
        }
    }
}

Şimdi print_r aşağıdaki çıktılar:

User Object
(
    [_username:private] => joebloggs
    [_password:private] => m/SzYRxTF29cZJqk/B/2sg==
    [_email:private] => joebloggs@msn.com
)

Nasıl yöntemleri geliyor şimdi ama onların değeri ile değişkenler iade ediliyor denir?

Nesne render nasıl bilmeden hiçbir bahane yok yani PS, ben de diğer kütüphanede sınıf / arayüzünü dahil ettik.

0 Cevap