الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Overloading فى php ?

مغلق
بدأه Dr.Pain في 23 مارس 2006 · 1 رد · 1,418 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ............

الى يومنا هذا وانا ابحث عن كيفية عمل overloading لاعضاء الفئة سواء اكانت اعضاء عادية

ام الاعضاء الخاصة ببناء الفئة فعلى سبيل المثال لو اردنا بناء كائن اتصال ففي هذه الحالة قد ارغب

في ان اجعل له اكثر من تابع بناء constructer ولكن للاسف الى اليوم كل الامثلة التي جمعتها

لا تتطابق مع ما اعرفه .

يمكن انا وجدت الحل ولكن لم افهم فمثلا انظروا الى هذه الصفحة :

PHP Overloading

رجاء حد يفهمني الطريقة انا قربت اجنن مع العلم انني استخدم PHP5 .

اخوكم Dr.Pain

تم تعديل هذه المشاركة بواسطة Dr.Pain في 23 مارس 2006 في 00:13

#2

انا عن نفسى مش مقتنع بالـ magic methods المذكورة دى اوى , غالبا عشان ملقتلهاش استخدام مميز <br>بس هنا انا فكرت فى المشكلة بتاعتك و اعتقد ان الحل دة مناسب الى حد ما <br><div dir='ltr' align="left" style='background-color:#FAFAFA;border: 1px solid;height:400px;padding:6px; white-space:nowrap; width:520px; overflow:auto;'><font face="Courier New"><font SIZE="2"><font color="#000000"><font face="Courier New"><font SIZE="2"><font color="#000000"><?</font></font></font><font color="#0000A0">php<BR></font><BR><font face="Courier New"><font SIZE="2"><B><font color="#000000">class</font></B></font></font><font color="#0000A0"> Help</font><BR><font face="Courier New"><font SIZE="2"><font color="#000000">{<BR></font></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><B><font color="#000000">public</font></B><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">id </font><font color="#000000">;<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><B><font color="#000000">public</font></B><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">name</font><font color="#000000">;<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><B><font color="#000000">public</font></B><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">DAO</font><font color="#000000">;<BR><BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">//! Constructor</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">/**</font></I><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * Constructs the Help class</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     */</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><B><font color="#000000">function</font></B><font color="#0000A0"> __construct</font><font color="#000000">()</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><I><font color="#FF8040">/**</font></I><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">       * Getting the number of passed arguments</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">       */</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><font color="#000000">$</font><font color="#0000A0">argNum </font><font color="#000000">=</font><font color="#0000A0"> </font><B><font color="#008080">func_num_args</font></B><font color="#000000">();<BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><I><font color="#FF8040">/**</font></I><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">       * Getting the arguments</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">       */</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">       </font></font></font><font color="#000000">$</font><font color="#0000A0">args </font><font color="#000000">=</font><font color="#0000A0"> </font><B><font color="#008080">func_get_args</font></B><font color="#000000">();<BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><I><font color="#FF8040">/**</font></I><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">       * Then we will start a check to know which method</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">       * will be called</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">       */<BR></font></I></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">       </font></font></font><I><font color="#FF8040">/** if a one argument passed **/</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">       </font></font></font><B><font color="#000000">if</font></B><font color="#0000A0"> </font><font color="#000000">(</font><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">argNum </font><font color="#000000">==</font><font color="#0000A0"> </font><font color="#0000FF">1</font><font color="#0000A0"> </font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">          </font></font></font><font color="#000000">{</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">               </font></font></font><I><font color="#FF8040">/** if the passed argument is int **/</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">               </font></font></font><B><font color="#000000">if</font></B><font color="#0000A0"> </font><font color="#000000">(</font><font color="#0000A0"> </font><B><font color="#008080">is_int</font></B><font color="#000000">($</font><font color="#0000A0">args</font><font color="#000000">[</font><font color="#0000FF">0</font><font color="#000000">])</font><font color="#0000A0"> </font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                  </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                    </font></font></font><B><font color="#008080">call_user_func_array</font></B><font color="#000000">(</font><font color="#0000A0"> </font><B><font color="#000000">array</font></B>(<BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#000000">&$</font><font color="#0000A0">this</font><font color="#000000">,</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#C60000">'construct_1_int'</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                          </font></font></font><font color="#000000">,$</font><font color="#0000A0">args</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                         </font></font></font><font color="#000000">);<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                  </font></font></font><font color="#000000">}</font><font color="#0000A0"> </font><I><font color="#FF8040">/** if the passed argument is string **/</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">               </font></font></font><B><font color="#000000">elseif</font></B><font color="#0000A0"> </font><font color="#000000">(</font><font color="#0000A0"> </font><B><font color="#008080">is_string</font></B><font color="#000000">($</font><font color="#0000A0">args</font><font color="#000000">[</font><font color="#0000FF">0</font><font color="#000000">])</font><font color="#0000A0"> </font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                  </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                     </font></font></font><B><font color="#008080">call_user_func_array</font></B><font color="#000000">(</font><font color="#0000A0"> </font><B><font color="#000000">array</font></B>(<BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#000000">&$</font><font color="#0000A0">this</font><font color="#000000">,</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#C60000">'construct_1_string'</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                          </font></font></font><font color="#000000">,$</font><font color="#0000A0">args</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                         </font></font></font><font color="#000000">);<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                  </font></font></font><font color="#000000">}<BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">          </font></font></font><font color="#000000">}</font><I><font color="#FF8040">//end if ($argNum == 1 )</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">       </font></font></font><B><font color="#000000">elseif</font></B>(<font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">argNum </font><font color="#000000">==</font><font color="#0000A0"> </font><font color="#0000FF">2</font><font color="#0000A0"> </font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">          </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">              </font></font></font><B><font color="#000000">if</font></B><font color="#0000A0"> </font><font color="#000000">(</font><font color="#0000A0"> </font><B><font color="#008080">is_int</font></B><font color="#000000">($</font><font color="#0000A0">args</font><font color="#000000">[</font><font color="#0000FF">0</font><font color="#000000">])</font><font color="#0000A0"> </font><font color="#000000">&&</font><font color="#0000A0">  </font><B><font color="#008080">is_object</font></B><font color="#000000">($</font><font color="#0000A0">args</font><font color="#000000">[</font><font color="#0000FF">1</font><font color="#000000">])</font><font color="#0000A0"> </font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                  </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                     </font></font></font><B><font color="#008080">call_user_func_array</font></B><font color="#000000">(</font><font color="#0000A0"> </font><B><font color="#000000">array</font></B>(<BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#000000">&$</font><font color="#0000A0">this</font><font color="#000000">,</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#C60000">'construct_2_int_object'</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                                </font></font></font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                          </font></font></font><font color="#000000">,$</font><font color="#0000A0">args</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                                         </font></font></font><font color="#000000">);<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">                  </font></font></font><font color="#000000">}<BR><BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">          </font></font></font><font color="#000000">}</font><font color="#0000A0"> </font><I><font color="#FF8040">//end if ($argNum == 2 )<BR><BR><BR></font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><I><font color="#FF8040"># add more if you need that<BR><BR></font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">}</font><I><font color="#FF8040">//end function __construct<BR><BR><BR><BR><BR><BR><BR></font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">//! Overloaded Constructor</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">/**</font></I><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * This constructor only will be called if</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * the No. of passed arguments = 1 and the</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * type of argument is int</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     *@param int $id the id</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     */</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><B><font color="#000000">function</font></B><font color="#0000A0"> construct_1_int</font><font color="#000000">($</font><font color="#0000A0">id</font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><font color="#000000">$</font><font color="#0000A0">this</font><font color="#000000">-></font><font color="#0000A0">id </font><font color="#000000">=</font><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">id </font><font color="#000000">;<BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">}</font><I><font color="#FF8040">//end function  construct_1_int<BR><BR><BR><BR><BR></font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">//! Overloaded Constructor</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">/**</font></I><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * This constructor only will be called if</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * the No. of passed arguments = 1 and the</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * type of argument is string</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     *@param string $name the name</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     */</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><B><font color="#000000">function</font></B><font color="#0000A0"> construct_1_string</font><font color="#000000">($</font><font color="#0000A0">name</font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><font color="#000000">$</font><font color="#0000A0">this</font><font color="#000000">-></font><font color="#0000A0">name </font><font color="#000000">=</font><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">name </font><font color="#000000">;<BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">}</font><I><font color="#FF8040">//end function  construct_1_string<BR><BR><BR><BR><BR></font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">//! Overloaded Constructor</font></I><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><I><font color="#FF8040">/**</font></I><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * This constructor only will be called if</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * the No. of passed arguments = 2 and the</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     * passed arguments are</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     *@param int $id the id</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     *@param obj $DAO a DAO instance</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><I><font color="#FF8040">     */</font></I></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><B><font color="#000000">function</font></B><font color="#0000A0"> construct_2_int_object</font><font color="#000000">($</font><font color="#0000A0">id</font><font color="#000000">,</font><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">DAO</font><font color="#000000">)</font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">{<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><font color="#000000">$</font><font color="#0000A0">this</font><font color="#000000">-></font><font color="#0000A0">name </font><font color="#000000">=</font><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">name </font><font color="#000000">;<BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">      </font></font></font><font color="#000000">$</font><font color="#0000A0">this</font><font color="#000000">-></font><font color="#0000A0">DAO  </font><font color="#000000">=</font><font color="#0000A0"> </font><font color="#000000">$</font><font color="#0000A0">DAO  </font><font color="#000000">;<BR><BR></font><BR><font face="Courier New"><font SIZE="2"><font color="#0000A0">    </font></font></font><font color="#000000">}</font><I><font color="#FF8040">//end function  construct_2_int_object<BR><BR></font></I><BR><font face="Courier New"><font SIZE="2"><font color="#000000">}<BR></font></font></font><BR><font face="Courier New"><font SIZE="2"><font color="#000000">?><BR><BR></font></font></font></font></font></font></font></div><br>لو منفعتش معاك انا ممكن اوضحلك الحجات الى قالها الـ manual إن شاء الله <br><br>سؤال جميل على فكرة ;)

تم تعديل هذه المشاركة بواسطة shreef في 26 مارس 2006 في 21:04

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

هذا الموضوع مغلق.

مواضيع مشابهة