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,027

HOME > PHP > PHP Forum > พอจะมีวิธีส่งค่าตัวแปรในฟังก์ชั่นไปยังตัวแปร local ภายใน class ไหมครับ



 

พอจะมีวิธีส่งค่าตัวแปรในฟังก์ชั่นไปยังตัวแปร local ภายใน class ไหมครับ

 



Topic : 135132



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



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




พอจะมีวิธีส่งค่าไปยัง $blogId ไหมครับ ถ้าไม่ใช้ ตัวแปร session และ การ call function อะครับ คือผมต้องการใช้แค่ภายใน class

Code (PHP)
class HomeController extends Controller
{
 public $blogId; //สิ่งที่ต้องการ คือ ผมอยากกำหนดค่าให้ตัวแปรนี้ โดยกำหนดจาก fucntion Create **********
 public function __construct()
 {
    $this->blogId;
    $this->middleware('auth');
 }
 public function Create(Request $request)//ผมรับค่าข้อมูลมาจากฟอร์ม
 {
       $blog = create([
        'title' => $request['title'],
        'content' => $request['content'],
       ]);
       $this->blogId= $blog //ผมต้องการกำหนดค่าตัวแปร $blog ให้กับ $blogId *****************
       //session(['blogId' => $blog->id]); //ถ้าใช้ session ผลลัพธ์ที่ได้ตรงตามที่ต้องการ แต่มันสามารถเรียกใช้ได้ทุกที่ เพราะเป็น ตัวแปร Global ซึ่งผมอยากใช้แค่ภายใน class นี้ เท่านั้น
       //image($blog); 
 }
 public function image(Request $request){
    dd($this->blogId); //ผมจะเอามาใช้กับฟังก์ชั่นนี้ครับ ซึ่งผมดั้มออกมาแล้วค่าเป็น null ************
    // $blogId = session('blogId'); ไม่ใช้ตัวแปร session
 } 
}




Tag : PHP, Laravel Framework









ประวัติการแก้ไข
2020-04-20 16:41:25
2020-04-20 21:24:02
2020-04-20 21:25:23
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2020-04-20 16:37:39 By : zeuszerome View : 957 Reply : 14
 

 

No. 1



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



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


ใส่ highlight เป็นไหม?


ปกติส่งค่าภายใน class ก็ใช้ property ก็ถูกแล้ว
Code (PHP)
class MyClass
{
    protected $var1;

    public function run()
    {
        $this->var1 = 'abc';
        $this->showResult();
    }

    public function showResult()
    {
        echo $this->var1;// จะได้ abc
    }
}


ถ้ามันไม่ได้ก็ต้องดูตอนกำหนดค่าให้ property ว่ามันได้กำหนดค่าอะไรหรือเปล่า ทดลอง var_dump ออกมาดู






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 18:55:04 By : mr.v
 


 

No. 2



โพสกระทู้ ( 9,554 )
บทความ ( 2 )



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


Code (PHP)
class MyClass {
	private $myvar; // ประกาศตัวแปรภายใน class
	public function __construct(){ // function พิเศษ เมื่อ class ถูกสร้าง จาก คำสั่ง  $var = new myClass
		parent::__construct(); 
		$this->myvar='จะกำหนดอะไรก็ว่าไปในนี้';
		// จริงๆ แล้ว ทุก function ก็สามารถกำหนดค่าให้กับตัวแปร ได้เหมือนกันหมด
	}
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 19:41:51 By : Chaidhanan
 

 

No. 3

Guest


ขอความกรุณาอีกนิดครับ ผมติดตรงที่อยากให้ตัวแปรมันมีค่าและใช้ ภายใน classs ครับ
Code (PHP)
 class MyClass {
	private $myvar; // ประกาศตัวแปรภายใน class
	public function __construct(){ // function พิเศษ เมื่อ class ถูกสร้าง จาก คำสั่ง  $var = new myClass
		parent::__construct(); 
		$this->myvar='จะกำหนดอะไรก็ว่าไปในนี้';
		// จริงๆ แล้ว ทุก function ก็สามารถกำหนดค่าให้กับตัวแปร ได้เหมือนกันหมด
	}
        pub function First(Request &request){
         $blog = $request->title; //รับค่ามาจากฟอร์ม
         $this->myvar=$blog //ตรงนี้คือสิ่งที่ผมอยากทำหนดค่าให้ตัวแปร เพื่อให้ฟังก์ชั่น Second

          //  session(['blogId' => $blog]); ถ้าส่งโดยใช้ตัวแปร session มันได้ผลแต่มันสามารถเข้าถึงตัวแปรนี้ได้ทุกที่ ผมต้องกมารใช้แค่ใน class นี้
        }
        pub function Second (Request $request){ ///ฟังก์ชั่นนี้รับค่าจากฟอร์มรูปภาพซึ่งถูกส่งมาเป็น ajax ผมใช้ dropzone
            $file = $request->file('file'); //ผมรับไฟล์ภาพมา
            dd($this->$myvar) ผมดั้มค่ามาดูมันกลับเป็นค่า null ว่างป่าว

        }
}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 21:13:45 By : kot
 


 

No. 4



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



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


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2020-04-20 18:55:04
รายละเอียดของการตอบ ::
ผมดั้มมาดูแล้วค่ามันเป็นค่าว่างครับ ผมอยากให้ function Create กำหนดค่าให้มัน แล้วให้ ฟังก์ชั่น image เรียกใช้ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 21:27:32 By : zeuszerome
 


 

No. 5



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : Chaidhanan เมื่อวันที่ 2020-04-20 19:41:51
รายละเอียดของการตอบ ::
ผมอยากให้ function Create กำหนดค่าให้ มัน แล้วให้ ฟังก์ชั่น image เรียกใช้ตัวแปรนั้นครับ ซึ่งผม ดายดั้มมาดูค่าแล้วมันได้ค่า null ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 21:29:54 By : zeuszerome
 


 

No. 6



โพสกระทู้ ( 9,554 )
บทความ ( 2 )



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


ผมไม่เคยเขียนแบบนี้ งง ภาษา php หรือเปล่า
pub function First(Request &request){
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 22:27:21 By : Chaidhanan
 


 

No. 7



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



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


ตอบความคิดเห็นที่ : 6 เขียนโดย : Chaidhanan เมื่อวันที่ 2020-04-20 22:27:21
รายละเอียดของการตอบ ::
ผมใช้ laravel framework ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 22:37:17 By : zeuszerome
 


 

No. 8



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



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


var_dump ที่ตัว $blog ตรงตัวที่กำหนดค่าให้ property ครับไม่ใช่ตัวอ่าน
จะหาเหตุต้องหาให้ตรงจุด ไปหาตรงที่อ่านมันตรงจุดที่ไหนกัน?


$this->blogId= $blog// เอาไว้ทีหลัง
var_dump($blog);
exit();



ประวัติการแก้ไข
2020-04-20 22:41:05
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 22:38:54 By : mr.v
 


 

No. 9



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



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


ตอบความคิดเห็นที่ : 8 เขียนโดย : mr.v เมื่อวันที่ 2020-04-20 22:38:54
รายละเอียดของการตอบ ::
$blog ตัวนี้มีค่าครับ พี่ ค่ามันก็มาจากฟอร์ม input ตามที่กรอกค่าเลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 22:52:03 By : zeuszerome
 


 

No. 10



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



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


ค่ามันมาจากฟอร์มจริงแต่มันผ่าน function create(); ดังนั้นต้อง var_dump ให้เห็นแน่ๆ
และก็ต้องย้อนกลับไปดูที่การเรียกใช้ method image()

ถ้าไม่ได้เรียกใช้ต่อเนื่องอันเดียวกัน มันก็กลายเป็น null อยู่ดี เช่น
Code (PHP)
$Class = new HomeController();
$Class->Create();
$HomeController = new HomeController();
$HomeController->image();

แบบนี้มันก็ไม่ได้ มันไม่ได้ใช้ตัวแปรจาก object ที่ถูกสร้างในทีแรก

การเรียกใช้ image ต้องเป็นไปในลักษณะส่งต่อกัน เช่น

Code (PHP)
$Class = new HomeController();
$Class->Create();
$Class->image();


หรือ

Code (PHP)
class HomeController
{
    public function Create()
    {
         $this->image();
    }

    public function image()
    {
        //...
    }
}



ประวัติการแก้ไข
2020-04-20 23:31:42
2020-04-20 23:36:59
2020-04-21 00:34:15
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-20 23:29:54 By : mr.v
 


 

No. 12



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

Hall of Fame 2012

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


- $this->middleware('auth'); เนี่ยถ้าจะให้ดีให้มันไปเรียกใน web.php หรือ Route Group มันจะดีกว่าเพราะถ้าเขียนแบบ construct มันต้องไปเพิ่มทุกหน้า และถ้ามีการแก้ก็ต้องไล่แก้ทุก file ซึ่งมันเสียเวลา แก้หน้า route ทีเดียวจบเพื่อประหยัดเวลา
Code (PHP)
Route::group(['middleware' => ['web']], function () {
    //
});

- ส่วนรูปแบบการ insert ลองไปหาข้อมูลการใช้ tinger มันสะดวกไม่ต้องใช้ fillable model
Code (PHP)
$register=new Register();
$register->name=$request->name;
$register->email="$request->email;
$register->save();

- เทคนิค call function No.10 ตัวอย่างที่ 3 อันนี้ชัดเจน


ประวัติการแก้ไข
2020-04-21 10:01:19
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-21 09:59:24 By : Genesis™
 


 

No. 13



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : mr.v เมื่อวันที่ 2020-04-20 23:29:54
รายละเอียดของการตอบ ::
ขอขอบคุณทุกท่านมากนะครับ ทั้ง พี่Genesis™ , พี่ mr.v และพี่ Chaidhanan ที่พยายมช่วยผมครับ ผมได้วิธีแก้ละครับ
เริ่มจากฝั่ง Controller ก่อนนะครับ วิธีแก้คือ ผม Return ค่ากลับไป โดย สร้าง hidden ในฟอร์มรับค่าไว้ id จาก function uploadSubmit

Code (PHP)
public function uploadSubmit(Request $request)
    {  
            $blog = auth()->user()->blog()->create($request->all());
            $blog_id = $blog->id;
            return response()->json(['success'=>'Added new records.','blog_id'=>$blog_id]);
    }
    public function images(Request $request){
       
        if ($request->hasfile('file')) {
            $file = $request->file('file');
            $i=1;
            $blogid = $request->blogid;
            foreach ($file as $photo) {
                // $title = $blog->title;
                $date = now()->format('Y-m-d');
                $filename  = 'photo-'.$i . '.' .$photo->getClientOriginalExtension();
                $paths[]   = $photo->storeAs('blog_images'.'/'.$date, $filename, 'public');
                $i++;
            }
            foreach ($paths as $images) {
                BlogsPhoto::create([
                        'blog_id' => $blogid,
                        'filename' => $images
                    ]);
            }
        }
    }

ต่อไปฝั่ง Form รับค่าครับ
Code
{!! Form::hidden('blogid', '',['class'=>'blogid','id'=>'blogid']) !!} // ค่าที่ blog_id ที่ return มาจาก controller***********


แล้วรับด้วย javascript ของ dropzone ซึ่งเป็น drag and drop file ครับ
Code (JavaScript)
  Dropzone.autoDiscover = false;
    var myDropzone = new Dropzone("#dropzone", {
        url: '{{ route('home.images') }}',
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        method: "POST",
        paramName: "file",
        autoProcessQueue : false,
        acceptedFiles: "image/*",
        maxFiles: 5,
        maxFilesize: 5, // MB
        uploadMultiple: true,
        parallelUploads: 100, // use it with uploadMultiple
        createImageThumbnails: true,
        thumbnailWidth: 120,
        thumbnailHeight: 120,
        addRemoveLinks: true,
        timeout: 180000,
    });

    myDropzone.on("sending", function(file, xhr, formData) {
         formData.append("blogid", $("#blogid").val());
    });

    // on success
    myDropzone.on("successmultiple", function(file, response) {
        myDropzone.removeAllFiles(file);
        $("#dropzone-form")[0].reset();
    });

    var submitDropzone = document.getElementById("submit-dropzone");
    submitDropzone.addEventListener("click", function(e) {
  
        e.preventDefault();
        e.stopPropagation();
        formData = $('#dropzone-form').serialize();
        
        //Check value validation dropzone file
        var file = "";
        if (myDropzone.getQueuedFiles().length > 0) {                        
              file = myDropzone.getQueuedFiles().length;
        }

            $.ajax({
                url: '{{ route('home.uploadSubmit') }}',
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                type:'POST',
                data: formData,
                success: function(data) {
                    if($.isEmptyObject(data.error)){
                        var blogid = data.blog_id;
			$("#blogid").val(blogid); // ตัวนี้ส่งไปยัง function image ใน controller เพื่อให้ เพิ่มลง data base ครับ ******
                        console.log(blogid);
                        myDropzone.processQueue();
                        alert(data.success);
                    }else{
                        console.log(blogid);
                        printErrorMsg(data.error);
                    }
                }
            });
            function printErrorMsg (msg) {
                $(".print-error-msg").find("ul").html('');
                $(".print-error-msg").css('display','block');
                $.each( msg, function( key, value ) {
                    $(".print-error-msg").find("ul").append('<li>'+value+'</li>');
                });
            }
        
    });


เหนื่อยเลยครับ แต่ดีใจที่ได้ ผมไม่อยากใช้ตัวแปร session เพราะมัน เรียกได้ทุกที่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-21 21:37:11 By : zeuszerome
 


 

No. 14



โพสกระทู้ ( 9,554 )
บทความ ( 2 )



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


ขอทราบเหตุผลหน่อยครับ ว่าทำไมถีงไม่อยากใช้ session

ถีงแม้ session จะสามารถเรียกใช้ได้ทุกที่ในโปรแกรม
แต่มันจำกัดการเรียกใช้ได้เฉพาะ client ที่ติดต่อเข้ามาเท่านั้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-22 06:39:58 By : Chaidhanan
 


 

No. 15



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



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

ไม่ต้องส่งกลับไปกลับมาก็ได้ครับ
ศึกษาหัวข้อ Dependency Injection & Controller จาก Document ซึ่งทำได้ทั้งใน Contructor และ/หรือ Method
ส่วน Routing ก็สำคัญ เช่นกัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-04-22 13:50:00 By : PhrayaDev
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : พอจะมีวิธีส่งค่าตัวแปรในฟังก์ชั่นไปยังตัวแปร local ภายใน 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 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่