<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های حسین محمدحسینی</title>
        <link>https://virgool.io/feed/@mr_hmh</link>
        <description>Web Develepor</description>
        <language>fa</language>
        <pubDate>2026-06-17 12:38:36</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2611/avatar/cEYb2W.png?height=120&amp;width=120</url>
            <title>حسین محمدحسینی</title>
            <link>https://virgool.io/@mr_hmh</link>
        </image>

                    <item>
                <title>رفلکشن در پی اچ پی - Reflection in PHP</title>
                <link>https://virgool.io/@mr_hmh/%D8%B1%D9%81%D9%84%DA%A9%D8%B4%D9%86-%D8%AF%D8%B1-%D9%BE%DB%8C-%D8%A7%DA%86-%D9%BE%DB%8C-reflection-on-php-rkitomt5vxwp</link>
                <description>به نام خداسلام و شب بخیرتو این پست میخوایم در مورد Reflection صحبت کنیم.این ویژگی توی بیشتر زبان های برنامه نویسی مثل Ruby, Java, PHP و ... هست ولی معمولا تو دوره های اموزشی در موردش صحبتی نمیشه، چون خودشو تو پروژه های بزرگ و فریم ورک ها نشون میده.Reflection in PHPاگه با فریم ورک لاراول کار کرده باشین با بحث IOC Container ش سروکار داشتین، احتمالا براتون سوال بوده که لاراول چجوری میاد dependency های یک کلاس رو بهش میده. مثلا تو متد سازنده کلاس پایین چجوری میفهمه و میاد user رو تزریق میکنه؟class UserController
{
    public function __construct(User $user)
    {
        $this-&gt;user = $user;
    }
}یا شاید دیده باشین فریم ورک هایی که کامنت های متد (annotation) براشون مهم هستن و ازشون استفاده میکنن (مثل بعضی از پکیج ها که فایل سوگر رو میسازن)فانکشن های get_class() یا method_exists() یا ... دیدیدن تو PHP؟ همه ی اینا و خیلی مثال های قشنگ دیگه همشون دارن از امکاناتی که reflection در اختیارشون میذاره استفاده میکنن.خب دیگه وقتشه که بریم داشته باشیم اموزش امروز رو ...تعریف Reflectionاین توضیحی هست که خود سایت php.net داده:PHP comes with a complete reflection API that adds the ability to introspect classes, interfaces, functions, methods and extensions. Additionally, the reflection API offers ways to retrieve doc comments for functions, classes and methods.رفلکشن تو PHP ابزاریه که بهتون امکان اینو میده تا بتونین تقریبا به تمام ساختار یک کلاس، اینترفیس، فانکشن، متد، اکستنشن دسترسی داشته باشین. حتی میتونین به کامنت های نوشته شده هم دسترسی داشته باشین (چقدر جذاب)خب تا اینجای کار تونستیم رفلکشن رو تعریف کنیمکلی کلاس و متد توی PHP برای استفاده از رفلکشن وجود داره که میتونین تو این لینک در موردشون بخونین. من اینجا بعضی از پرکاربردترین هاشو براتون مثال میزنمقطعه کد پایین رو در نظر بگیرین:&lt;?php
namespace App;

interface Commentable {}
interface Likeable {}
class DB {}
class BaseModel {}

class Post extends BaseModel implements Commentable, Likeable
{
    public function __construct(DB $db) {}
    public function likes() {}
    public function comments() {}
}خب حالا با کمک رفلکشن میخوایم یسری اطلاعات از این کلاس داشته باشیم.$reflection = new \ReflectionClass(App\Post::class);بریم اسم و namespace بگیریمecho $reflection-&gt;getName(); 
// App\Post
echo $reflection-&gt;getShortName(); 
// Post
echo $reflection-&gt;getNamespaceName(); 
// Appبریم اسم پدرش رو بگیریم$parent = $reflection-&gt;getParentClass();
echo $parent-&gt;getName();
//App\BaseModelاسم اینترفیس هاش$interfaces = $reflection-&gt;getInterfaceNames();
var_dump($interfaces);
// array(2) { [0]=&gt; string(15) &amp;quotApp\Commentable&amp;quot [1]=&gt; string(12) &amp;quotApp\Likeable&amp;quot }لیست متدهاش$methods = $reflection-&gt;getMethods();
var_dump($methods);

// array(3) { [0]=&gt; object(ReflectionMethod)#5 (2) { [&amp;quotname&amp;quot]=&gt; string(11) &amp;quot__construct
// [&amp;quotclass&amp;quot]=&gt; string(8) &amp;quotApp\Post&amp;quot } [1]=&gt; object(ReflectionMethod)#6 (2) { [&amp;quotname&amp;quot]=&gt; string(5)
// &amp;quotlikes&amp;quot [&amp;quotclass&amp;quot]=&gt; string(8) &amp;quotApp\Post&amp;quot } [2]=&gt; object(ReflectionMethod)#7 (2) { [&amp;quotname&amp;quot]=&gt; 
// string(8) &amp;quotcomments&amp;quot [&amp;quotclass&amp;quot]=&gt; string(8) &amp;quotApp\Post&amp;quot } }گرفتن متد سازندش و پارامترهاش$constructor = $reflection-&gt;getConstructor();
$parameters = $constructor-&gt;getParameters();
var_dump($parameters);
// array(1) { [0]=&gt; object(ReflectionParameter)#9 (1) { [&amp;quotname&amp;quot]=&gt; string(2) &amp;quotdb&amp;quot } }

echo $parameters[0]-&gt;getType()-&gt;getName();
// App\DBخب تو این پست سعی کردم Reflection رو در PHP توضیح بدم، امیدوارم به قدرت این ابزار پی برده باشین و ایده های قشنگی به ذهنتون رسیده باشه. (حتما ی نگاه سطحی به کلاس ها و توابع اون بندازین)در پست بعدی میخوام نحوه استفاده از اون رو در کلاسی مثل IOC Container لاراول رو توضیح بدم. (تقلب: مثال اخر خیلی مهمه تو IOC Container)اینجا این پست به پایان میرسه، ممنون که تا اخر همراه بودینلطف میکنین اگه نظراتتون رو در کامنت بهم بگین، چون هم باعث میشه انرژی بگیرم و هم در پست های بعدی ازشون استفاده کنم</description>
                <category>حسین محمدحسینی</category>
                <author>حسین محمدحسینی</author>
                <pubDate>Sun, 19 Dec 2021 23:12:37 +0330</pubDate>
            </item>
                    <item>
                <title>شروع فعالیت در ویرگول</title>
                <link>https://virgool.io/@mr_hmh/%D8%B4%D8%B1%D9%88%D8%B9-%D9%81%D8%B9%D8%A7%D9%84%DB%8C%D8%AA-%D8%AF%D8%B1-%D9%88%DB%8C%D8%B1%DA%AF%D9%88%D9%84-o0zavr65ylw2</link>
                <description>سلامامیدوارم حالتون بهتر از همیشه باشه :)این اولین پستی هست ک دارم تو ویرگول مینویسماین پست 4 تا بخش داره:ی معرفی کوچیک از خودمداستان کاریمتشکر از افرادی ک تو این راه خیلی کمکم کردناگه تا اخرش خوندین میخوام هدفمم از اومدن ب اینجا بگممن حسین محمدحسینی هستم، برنامه نویس وب و کارشناسی نرم افزار دارم، شااید ارشد هم بخونم...داستان استارت اصلی برنامه نویسی من از یکی از ترم های کاردانی شروع شد، دوستم پیشنهاد داد ک ی سایتی دوره برنامه نویسی گذاشته ب اسم &quot;ساخت فروشگاه اینترنتی مشابه دیجیکالا با PHP&quot; بگیریم؟ خب ما هم ک از خدا خواسته با چندتا از بچه های دیگه رفتیم باهم خریدیمش.ماه رمضون همون سال بود ک من اموزشارو کپی کردم رو سیستممو شروع کردم به دیدن. به ضِرس قاطع عرض میکنم ک اگه بگم روزی بیشتر از 15 ساعت کلا پشت سیستم و در حال اموزش و تمرین بودم دروغ نگفتم.کل ماه رمضون اون سالِ من ب این شکل گذشت و بزرگترین گام من در اون سالها بود.حاصل اون یک ماه، شد یک کپی ناقص از سایت دیجیکالا ک البته سمت پنل ادمینش هنوز خیلی کار داشت، ولی چون مابقی پروژه در اصل تکرار کارهای قبلی برای فیچرهای مختلف بود، از ادامه دادنش دست کشیدم و تو اوج از اون دوره خداحافظی کردم. (همون کپی ناقص تونست 3 تا پروژه پایانی رو با افتخار نمره بگیره :) )بعد از اون دوره چون دیگه ترسم از برنامه نویسی کلا ریخته بود شروع کردم سَرَک کشیدن ب چیزای مختلف، مثلا میرفتم ربات تلگرام درست میکردم و اوه راستی نمیدونین وقتی ی ربات نوشتم ک QR code تولید میکرد چ حس خفن بودنی داشتم برا خودم :)یکی دیگه از دوستام ک دید انگار اگه ترشی نخورم یچیزی میشم شروع کرد برای اینکه من انگیزه بگیرم و بیشتر تلاش کنم، از هرجایی ک فکر میکرد پروژه در میاورد :))))))))خلاصه چندتا سایت زدمو گذاشتم تو رزومم و شروع کردم ب رزومه دادن برای شرکت ها.سومین شرکتی ک رفتم برا مصاحبه متوجه شدن ک با چ ادم خفنی مواجه هستن و کارو دراوردن (ممنون ک نمیخندین)از سال 96 تا الان توی اون شرکتم و در حال حاضر پوزیشن فول استکِ وب رو دارم.تو شرکتمون 3 تا پروژه داریم که البته در حال حاضر فقط یکیشون زندس، همونی ک استارتاپ نیست :)، و 2 تا پروژه اولی متاسفانه نتونستن از دره مرگ استارتاپ ها جون سالم بدر ببرن و fail شدن...من پیشرفت اصلیمو رو اولین پروژه شرکت داشتم، بخاطر تعدد فیچرهای سنگینی ک داشتیم مجبور بودم کلی چیزایی ک تا حالا اسمشونم ب گوشم نخورده بود رو یاد بگیرم (کلا فکر میکردم دیتابیس فقط mysql و sqlserver هست). خلاصه ک سکوی پرتاپ خیلی خفنی بود اون پروژه برای من، و هنوز هم بعد از گذشت نزدیک ب 3 سال از مرگش هنوز بهش تعلق خاطر دارم.ادم برا اینکه بتونه درست مسیر رو ب رشد خودشو پیدا کنه و تو اون مسیر حرکت کنه نیاز به داشتن کسانی داره ک بتونه ازشون راهنمایی بگیره.خداروشکر تو اون شرکت من ی منتور خیلی خفن پیدا کردم البته باید بگم منتورهای خیلی خفن، بزارین نام ببرم مهندس زهرا بوالحسنی، مهندس سعید نیکوکلام و به رهبری مهندس میثم گنجعلی. واقعا کارکردن با این عزیزان برام خیلی لذت بخش بوده و هست و کلی چیز ازشون چ در کار و چ در زندگی یاد گرفتم.خب اینجا دیگه واقعا جاداره اسم اون دوتا دوستمم بگم و ازشون تشکر کنم، کسی ک اولین تلنگر رو زد و باعث شروع این داستان شد مهندس محمد دولابی، و کسی حواسش ب انگیزه و ادامه دادنم بود مهندس محمدرضا برجیان.راستشو بخواین خیلی وقته میخواستم بیام و بنویسم، ولی خیلی از نوشتن خوشم نمیاد، تو مدرسه هم انشاء خودم نمینوشتم :) ولی خودمو میخوام ملزم کنم ک هر چند وقت ی پست بنویسم اینجا (امیدوارم بتونم و البته از همینجا بخاطر نوشته هایی ک ممکنه کلی مشکل نوشتاری داشته باشه ازتون معذرت میخوام). بیشتر پست هایی ک میخوام بزارم تو دسته برنامه نویسی و مهندسی نرم افزار هستن. امیدوارم بتونم ب رشد بیشتر مطالب فارسی تو حوزه برنامه نویسی خدمتی کنم.</description>
                <category>حسین محمدحسینی</category>
                <author>حسین محمدحسینی</author>
                <pubDate>Mon, 06 Dec 2021 20:13:28 +0330</pubDate>
            </item>
            </channel>
</rss>