উত্তর:
এটি বর্তমান অবজেক্টের একটি রেফারেন্স, এটি বেশিরভাগ ক্ষেত্রে অবজেক্ট অরিয়েন্টেড কোডে ব্যবহৃত হয়।
উদাহরণ:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
এটি তৈরি করা বস্তুর সম্পত্তি হিসাবে 'জ্যাক' স্ট্রিং সংরক্ষণ করে।
$this
পিএইচপি- র পরিবর্তনশীল সম্পর্কে জানার সর্বোত্তম উপায় হ'ল বিভিন্ন প্রসঙ্গে দোভাষীর বিপরীতে চেষ্টা করা:print isset($this); //true, $this exists
print gettype($this); //Object, $this is an object
print is_array($this); //false, $this isn't an array
print get_object_vars($this); //true, $this's variables are an array
print is_object($this); //true, $this is still an object
print get_class($this); //YourProject\YourFile\YourClass
print get_parent_class($this); //YourBundle\YourStuff\YourParentClass
print gettype($this->container); //object
print_r($this); //delicious data dump of $this
print $this->yourvariable //access $this variable with ->
সুতরাং $this
সিউডো-ভেরিয়েবলের বর্তমান অবজেক্টের পদ্ধতি এবং বৈশিষ্ট্য রয়েছে। এই জাতীয় জিনিস দরকারী কারণ এটি আপনাকে ক্লাসের মধ্যে সমস্ত সদস্য ভেরিয়েবল এবং সদস্য পদ্ধতি অ্যাক্সেস করতে দেয়। উদাহরণ স্বরূপ:
Class Dog{
public $my_member_variable; //member variable
function normal_method_inside_Dog() { //member method
//Assign data to member variable from inside the member method
$this->my_member_variable = "whatever";
//Get data from member variable from inside the member method.
print $this->my_member_variable;
}
}
$this
Object
আপনার জন্য দোভাষী দ্বারা তৈরি করা হয়েছিল এমন একটি পিএইচপি সম্পর্কিত রেফারেন্স , এতে ভেরিয়েবলের অ্যারে রয়েছে।
আপনি যদি $this
কোনও সাধারণ শ্রেণিতে একটি সাধারণ পদ্ধতির অভ্যন্তরে কল করেন তবে $this
সেই পদ্ধতিটি অন্তর্ভুক্ত অবজেক্ট (শ্রেণি) প্রদান করে।
$this
প্রসঙ্গে যদি কোনও প্যারেন্ট অবজেক্ট না থাকে তবে অপরিজ্ঞাত হওয়া সম্ভব ।
পিএইচপি.net পিএইচপি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এবং $this
প্রসঙ্গে নির্ভর করে কীভাবে আচরণ করে সে সম্পর্কে কথা বলার একটি বড় পৃষ্ঠা রয়েছে ।
https://www.php.net/manual/en/language.oop5.basic.php
আমি এর পুরানো প্রশ্ন জানি, যাইহোক - এই সম্পর্কে আরও সঠিক ব্যাখ্যা । $ পর্যন্ত এই প্রধানত একটি বর্গ বৈশিষ্ট্য নির্দেশ করতে ব্যবহার করা হয়।
উদাহরণ:
Class A
{
public $myname; //this is a member variable of this class
function callme() {
$myname = 'function variable';
$this->myname = 'Member variable';
echo $myname; //prints function variable
echo $this->myname; //prints member variable
}
}
আউটপুট:
function variable
member variable
এটি নিজের মধ্যে থেকে কোনও শ্রেণীর উদাহরণকে উল্লেখ করার উপায়, অন্য অনেকগুলি অবজেক্ট ওরিয়েন্টেড ভাষার মতো।
থেকে পিএইচপি ডক্স :
সিউডো-ভেরিয়েবল $ এটি উপলব্ধ থাকে যখন কোনও পদ্ধতির কোনও অবজেক্ট প্রসঙ্গে থেকে ডাকা হয়। $ এটি হ'ল কলিং অবজেক্টের একটি রেফারেন্স (সাধারণত অবজেক্টটি যার সাথে মেথডটি অন্তর্ভুক্ত হয় তবে সম্ভবত অন্য কোনও অবজেক্ট, যদি পদ্ধতিটি কোনও গৌণ বস্তুর প্রেক্ষাপট থেকে স্ট্যাটিকভাবে বলা হয়)।
আমরা যদি এটি ব্যবহার না করি তবে কী ঘটে তা দেখা যাক - এটি নীচের কোড স্নিপেটের সাথে একই নামের সাথে ভেরিয়েবল এবং কনস্ট্রাক্টর যুক্তি যুক্ত করার চেষ্টা করুন
<?php
class Student {
public $name;
function __construct( $name ) {
$name = $name;
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
এটি ইকোস ছাড়া আর কিছুই নয়
<?php
class Student {
public $name;
function __construct( $name ) {
$this->name = $name; // Using 'this' to access the student's name
}
};
$tom = new Student('Tom');
echo $tom->name;
?>
এই প্রতিধ্বনি 'টম'
$this
দ্বিতীয় কনস্ট্রাক্টর ব্যবহার করে আমি এটি ঠিক করেছি ।
$name
টম থাকে তবে ফাংশনের বাইরে এর কোনও মূল্য থাকে না, কারণ এর পরিধিটি ফাংশনটির মধ্যে সীমাবদ্ধ।
যখন আপনি একটি ক্লাস তৈরি করেন আপনার (বহু ক্ষেত্রে) ইনস্ট্যান্স ভেরিয়েবল এবং পদ্ধতি (যেমন ফাংশন) থাকে। । এটি instance দৃষ্টান্তের পরিবর্তনশীলগুলিতে অ্যাক্সেস করে যাতে আপনার ফাংশনগুলি সেই ভেরিয়েবলগুলি নিতে পারে এবং তাদের সাথে যা খুশি তা করার জন্য তাদের যা প্রয়োজন তা করতে পারে।
মধ্যস্থতার উদাহরণের আরও একটি সংস্করণ:
class Person {
protected $name; //can't be accessed from outside the class
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
// this line creates an instance of the class Person setting "Jack" as $name.
// __construct() gets executed when you declare it within the class.
$jack = new Person("Jack");
echo $jack->getName();
Output:
Jack
$this
হয় কলিং বস্তুর একটি রেফারেন্স (সাধারণত বস্তুর জন্য পদ্ধতি জন্যে কিন্তু সম্ভবত অন্য বস্তুর, যদি পদ্ধতি সেকেন্ডারি বস্তুর প্রসঙ্গ থেকে স্ট্যাটিক্যালি বলা হয়)।
$ এটি একটি বিশেষ পরিবর্তনশীল এবং এটি একই অবজেক্টকে বোঝায় ie নিজেই।
এটি প্রকৃতপক্ষে বর্তমান শ্রেণীর উদাহরণ উল্লেখ করে
এখানে একটি উদাহরণ যা উপরের বিবৃতিটি পরিষ্কার করবে
<?php
class Books {
/* Member variables */
var $price;
var $title;
/* Member functions */
function setPrice($par){
$this->price = $par;
}
function getPrice(){
echo $this->price ."<br/>";
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title ." <br/>";
}
}
?>
এটি দীর্ঘ বিস্তারিত ব্যাখ্যা। আমি আশা করি এটি প্রাথমিকভাবে সাহায্য করবে। আমি এটা খুব সহজ করব।
প্রথমে একটি ক্লাস তৈরি করা যাক
<?php
class Class1
{
}
আপনি পিএইচপি বন্ধ করার ট্যাগ বাদ দিতে পারেন ?>
যদি পিএইচপি কোড ব্যবহার করেন তবে আপনি পারেন।
এখন আসুন বৈশিষ্ট্য এবং একটি পদ্ধতি ভিতরে Class1
।
<?php
class Class1
{
public $property1 = "I am property 1";
public $property2 = "I am property 2";
public function Method1()
{
return "I am Method 1";
}
}
সম্পত্তিটি কেবল একটি সাধারণ ভেরিয়েবল, তবে আমরা একে শ্রেণীর অভ্যন্তরে এটি সম্পত্তি নাম দিয়ে থাকি।
পদ্ধতিটি কেবল একটি সাধারণ ফাংশন, তবে আমরা বলি পদ্ধতিটি ক্লাসের অভ্যন্তরেও থাকে uz
দ্য public
মানে শব্দ যে পদ্ধতি বা একটি সম্পত্তি স্ক্রিপ্ট কোথাও অ্যাক্সেস করতে পারবেন।
এখন, আমরা কীভাবে বৈশিষ্ট্য এবং পদ্ধতিটি ভিতরে ব্যবহার করতে পারি Class1
?
উত্তরটি একটি উদাহরণ বা একটি অবজেক্ট তৈরি করছে, কোনও বিষয়টিকে শ্রেণীর অনুলিপি হিসাবে ভাবেন।
<?php
class Class1
{
public $property1 = "I am property 1";
public $property2 = "I am property 2";
public function Method1()
{
return "I am Method 1";
}
}
$object1 = new Class1;
var_dump($object1);
আমরা একটি অবজেক্ট তৈরি করেছি $object1
, যা Class1
এটির সমস্ত সামগ্রীর অনুলিপি । এবং আমরা $object1
ব্যবহারের সমস্ত বিষয়বস্তু ফেলে দিয়েছি var_dump()
।
এই আপনাকে দেবে
object(Class1)#1 (2) { ["property1"]=> string(15) "I am property 1" ["property2"]=> string(15) "I am property 2" }
তাই বিষয়বস্তু Class1
রয়েছে $object1
ছাড়া Method1
, আমি জানি না যখন বস্তু ডাম্পিং কেন পদ্ধতি দেখায় না।
এখন যদি আমরা $property1
কেবল অ্যাক্সেস করতে চাই what এটি সহজ, আমরা এটি করি var_dump($object1->property1);
, আমরা কেবল যুক্ত করেছি ->property1
, আমরা এটির দিকে লক্ষ্য করেছি।
আমরাও অ্যাক্সেস করতে Method1()
পারি, করি var_dump($object1->Method1());
।
এখন ধরুন আমি $property1
ভিতরে থেকে অ্যাক্সেস করতে চাই Method1()
, আমি এটি করব
<?php
class Class1
{
public $property1 = "I am property 1";
public $property2 = "I am property 2";
public function Method1()
{
$object2 = new Class1;
return $object2->property1;
}
}
$object1 = new Class1;
var_dump($object1->Method1());
আমরা তৈরি করেছি $object2 = new Class1;
যা এর একটি নতুন অনুলিপি Class1
বা আমরা উদাহরণ বলতে পারি। তারপর আমরা property1
থেকে ইশারা$object2
return $object2->property1;
এটি string(15) "I am property 1"
ব্রাউজারে মুদ্রণ করবে ।
পরিবর্তে এখন ভিতরে এটি করার Method1()
$object2 = new Class1;
return $object2->property1;
আমরা এই কাজ
return $this->property1;
$this
অবজেক্ট শ্রেণী নিজেই উল্লেখ করতে বর্গ ভিতরে ব্যবহার করা হয়।
এটি নতুন অবজেক্ট তৈরি করার এবং তারপরে এ জাতীয় ফেরত দেওয়ার বিকল্প
$object2 = new Class1;
return $object2->property1;
আরেকটি উদাহরণ
<?php
class Class1
{
public $property1 = 119;
public $property2 = 666;
public $result;
public function Method1()
{
$this->result = $this->property1 + $this->property2;
return $this->result;
}
}
$object1 = new Class1;
var_dump($object1->Method1());
আমরা পূর্ণসংখ্যাযুক্ত 2 টি বৈশিষ্ট্য তৈরি করেছি এবং তারপরে আমরা সেগুলি যুক্ত করে ফলাফলটি রেখেছি $this->result
।
ঐটা ভুলে যেও না
$this->property1
= $property1
=119
তাদের একই মান আছে .. ইত্যাদি
আমি আশা করি যে ধারণাটি ব্যাখ্যা করে।
এই সিরিজের ভিডিওগুলি আপনাকে ওওপিতে অনেক সহায়তা করবে
https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv
এটি বর্তমান শ্রেণীর উদাহরণকে বোঝায়, যেমন মধ্যস্থতা করেছেন।
দেখুন পিএইচপি ডক্স । এটি প্রথম উদাহরণে ব্যাখ্যা করা হয়েছে।