Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > มีวิธีใดบ้างที่จะ $string = new class(); ได้อัตโนมัติใน class อื่นๆ



 

มีวิธีใดบ้างที่จะ $string = new class(); ได้อัตโนมัติใน class อื่นๆ

 



Topic : 034690



โพสกระทู้ ( 4,759 )
บทความ ( 8 )



สถานะออฟไลน์




ตย. ผมใช้ phpmailer
แล้วทีนี้ผมก็สร้างคลาสตัวนึงขึ้นมา ชื่อ email

Code (PHP)
//ในไฟล์ email.php
require_once(dirname(__FILE__)."/phpmailer/class.phpmailer.php");

class email {
	public function send_single($to,$from,$body){
		$mail->issmtp();
		$mail->.... ว่ากันไปตามวิธีของ phpmailer;
		return true;//ส่งเสร็จแล้วก็ return true;
	}
}


ใน class เนี้ย ผมไม่อยากจะมา new phpmailer ในทุกๆ method หรือ function อื่นๆใดอีก อยากแบบว่าเขียน function มาใหม่ก็เล่น $mail ได้เลยจะมีวิธีบ้างมั้ยครับ?

ผมได้ลองดู __construct ก็ไม่เห็นว่ามันจะมีประโยชน์อะไร ผมคงใช้ไม่เป็น



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-11-21 21:17:42 By : mr.v View : 1252 Reply : 5
 

 

No. 1



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

สมมุติ A คือ phpmailer ครับ
<?php

class A{
    public function a1(){
        echo 'a1;';
    }
}

class B{
    public $a;
    public function __construct(){
        $this->a = new A();
    }
    public function b1(){
        $this->a->a1();
    }
    public function b2(){
        $a =& $this->a; //ทำให้เรียกใช้ object a ได้สั้นขึ้น
        $a->a1();
    }
}

class C extends B{
    public function c1(){
        $this->a->a1();
    }
}

$c = new C();
$c->b1();
$c->b2();
$c->c1();







Date : 2009-11-21 22:09:10 By : num
 


 

No. 2



โพสกระทู้ ( 830 )
บทความ ( 0 )



สถานะออฟไลน์


เฮ้ย พี่หนุ่ม วันนี้ เราคุยกันเรื่องนี้ อยู่ไช่ป่าว

บังเอิญจัง 555+

--------------

จริงๆ class ทำได้หลายแบบจริงๆ

ผมเอาตัวอย่างโค้ดที่ผมเขียนมาวันนี้ ให้ดูครับ

ลองดูว่า มันทำอะไรได้บ้าง

Code (PHP)
class dy_Registry
{
    public $userinfo;
    public $login;
    public $db;
    public $debug;
    public $var;
    public $config;
    public $lang;
    public $cookie;
    public $session;
    public $forum_cache;
    public $module_cache;
    public $style_cache;
    public $cms_cache;
    public $ip_address;
    public $host_name;
    
    public function __construct()
    {
        $this->var =& new dy_Input;
        
        $this->cookie =& new dy_Cookie(COOKIE_PREFIX);
        
        $this->session =& new dy_Session(SESSION_PREFIX);
        
        $this->login =& new dy_Login;
        
		//------------------
		// GET USER IPADDRS
		//------------------
		preg_match( "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/", $this->var->my_get_env('REMOTE_ADDR'), $match );
		$this->ip_address = $match[1].'.'.$match[2].'.'.$match[3].'.'.$match[4];

		if ( $this->ip_address == '...' )
		{
			echo "ไม่สามารถทราบหมายเลขไอพีของคุณได้";
			exit;
		}
        
        $this->host_name = gethostbyaddr($this->ip_address);
    }


นั้นแค่ส่วนหนึ่งครับ

อันนี้ class login

ดูดีๆ จะมีการใช้ class หลักมาวน ไป วนมา ใช้ได้สบายๆ เลยครับ

Code (PHP)
class dy_Login
{
	
	public function __construct()
	{
	}
	
	private function insertLogin($USERID, $USERNAME, $COOKIE = '')
	{
		global $dyclass;

		$LOGINCODE = substr($USERNAME,0,5) . "_" . date("d-m-y_His") . "_" . rand(1111111,9999999);

        $dyclass->session->set('USERLOGINCODE', $LOGINCODE);
	
		if ( $COOKIE !== FALSE )
		{
			$timeArray = array(0 => 365, 1 => 7, 2 => 30, 3 => 90, 4 => 180);
			
			if ( $COOKIE > -1 && $COOKIE <= 4 )
			{
                $dyclass->cookie->set('USERLOGINCODE', $LOGINCODE, TIME_NOW + 86400 * $timeArray[$COOKIE] );
			}
		}
	
        $dyclass->db->query_insert('user_login',
                                        array(
                                            'user_id'       =>  $USERID, 
                                            'login_code'    =>  $LOGINCODE, 
                                            'login_ip'      =>  $dyclass->ip_address,
                                            'login_host'    =>  $this->host_name
                                            )
                                    );
        $dyclass->db->query_update('user', 
                                        array(
                                            'user_last_login'   =>  date(DATETIME_FORMAT), 
                                            'user_total_login'  =>  'user_total_login+1',
                                            'user_login_status' =>  1
                                            ), 
                                            "user_id = $USERID"
                                            );
	}
	
	public function getLogin($USERNAME, $PASSWORD, $COOKIE)
	{
		global $dyclass;

		$sql = $dyclass->db->query_fetch('user', 'user_id, user_name', 
                                        'user_name = "' . $db->escape($USERNAME) . '"
                                        AND user_password = "' . md5($db->escape($PASSWORD)) . '"'
                                        );
	
		if ( $dyclass->db->num_rows($sql) == 1 )
		{
            $row = $dyclass->db->fetch_array($sql);
			$this->insertLogin($row['user_id'], $row['user_name'], $COOKIE);
		}
		return $this->getUserInfo();
	}
    
    
	public function getUserInfo()
    {
        global $dyclass;
        
        if ( $dyclass->session->get('USERLOGINCODE') )
        {
            return $this->getUser($dyclass->session->get('USERLOGINCODE'));
        }
        else if ( $dyclass->cookie->get('USERLOGINCODE') )
        {
            return $this->getUser($dyclass->cookie->get('USERLOGINCODE'));
        }
        return $this->getGuest();
    }
	
	private function getUser($LOGINCODE)
	{
		global $dyclass;

		$SQL	= $db->query("SELECT uID 
								FROM " . $db->pre ."ulogin 
								WHERE uLoginCode = '{$LOGINCODE}'
								");
		
		if ( $db->numrows($SQL) == 1 )
		{	
		    $uLogin = $db->fetch_array($SQL);
		    
		    $uID	=	$uLogin['uID'];

			$SQL2 = $db->query("SELECT * FROM ". $db->pre ."user, ugroup
		         		 		WHERE uID=". $uID ."
				  				AND user.uGroupID=ugroup.uGroupID");
	
			if ( $db->numrows($SQL2) == 1 )
			{
				return $db->fetch_array($SQL2);
			}
			return $this->getGuest();
		}
		return $this->getGuest();
	}

	private function getGuest()
	{
		global $dyclass;

		$sql = $dyclass->db->query_fetch("user_group",'','usergroup_id = 8');

		if ( $dyclass->db->num_rows($sql) == 1 )
		{
			$row = $dyclass->db->fetch_array($sql);
            $row['style_id'] = DEFAULT_STYLE_ID;
            return $row;
		}
		return false;
	}
	
	public function logOut($USERID, $uLoginCode)
	{
		...
	}
}

Date : 2009-11-21 22:30:48 By : danya
 

 

No. 3



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

http://www.fluffycat.com/PHP-Design-Patterns/
:D อ่านให้มันส์นะ
Date : 2009-11-21 23:06:20 By : num
 


 

No. 4



โพสกระทู้ ( 4,759 )
บทความ ( 8 )



สถานะออฟไลน์


ตกลงมันก็เขียนมากกว่าไปประกาศ new class ในแต่ละ function ซะอีกสิเนี่ย เพราะมันต้อง $this->mail->...

หลายขั้นเกิน งงเอาง่ายๆ สมองแรมน้อยๆของผม.

เว็บนอกอันนั้นมึนมาก อ่านไม่รู้เรื่องเลยครับ อย่างว่า..ทฤษฎีก็ไม่รู้ จะไปอ่านแบบนี้คงไปไม่เป็น 55

กลับไปใช้แบบเก่าง่ายสุด ประหยัดตัวอักษรสุด อิอิ
Date : 2009-11-21 23:41:16 By : mr.v
 


 

No. 5



โพสกระทู้ ( 1,463 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

extends PHPMailer เลยก็สั้นนะ :)

class email extends PHPMailer{
   function send($email,$msg){
         $this->IsSMTP();
         //...
   }   
}

Date : 2009-11-22 10:06:01 By : num
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มีวิธีใดบ้างที่จะ $string = new class(); ได้อัตโนมัติใน class อื่นๆ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่