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

[ تمت الإجابة ]استخدام متغير من داخل الكلاس

بدأه midoxpoem في 11 أبريل 2012 · 9 رد · 853 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أتمنى تفيدوني بالمشكلة ده لأني حاولت فيها كتير

..

أنا اقوم ببرمجة كلاس أساسي فيه مجموعة من الدوال التي تساعد في عمل برنامج رفع صور

بحيث أقوم بعدها عند الحاجة لعمل نموذج رفع صورة

أقوم بعمل كلاس جديد يقوم بعمل inheritance من الكلاس الاساسي و أستدعي الدوال التي أريدها

..

ثم آتي في صفحة الرفع و أقوم باستدعاء ال constructor الخاص بالكلاس الصغير

..

ولكن هناك معلومات معينة في الكونستراكتور الخاص بالكلاس الصغير ناتجة من العمليات و محفوظة في متغيرات

واريد أنا استخدمها في صفحة الرفع لتسجيل هذه البيانات في قاعدة البيانات

..

أتمنى من يستطيع أن يفيدني بمعلومات أو مراجع

و إذا كان ارفاق الملفات سيكون هاما سوف ارفقها .. و لكن أخشى أنها كبيرة

..

في انتظار ردودكم

وشكرا

اللهم أعني على ذكرك و شكرك و حسن عبادتك

#2

معلوماتي حول الكلاسيز بشكل عام قليله ولكن يمكنك أن تجعل المتغيرات التي تريدها كناتج للعمليه

return varx ;

كما يمكنك إستخدام الجلسات لتخزين المتغيرات وإستخدامها داخل وخارج الكلاس والدوال

ويمكنك إستخدام

public $var;

داخل وخارج الكلاس والدوال

1

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#3

شاكر ليك ردك جدا أستاذ بسام

الصراحة ده أول كلاس مفيد أقوم بعمله :sleep:

..

بخصوص ال return فأثناء بحثي و تجربتي وجدت كذا حاجة أحب نتشاركهم

الأولى : انا بعمل ال return بس لو حطيت ليها قيمة بنفسي .. هتظهر بره .. أما لو حطيت لها متغير موش بتظهر

الثانية : أستطيع عمل return لقيمة واحدة من الدالة .. و لكي أقوم بإخراج أكثر من قيمة المفروض أدخلهم في مصفوفة

الثالثة : كود ال return لن يتم قراءته .. إذا تم وضع كود echo بعده في نفس الدالة

طبعا أقصد بالدالة هنا ال constructor أو أي دالة أحب في الكلاس هستخدمها

..

بخصوص ال public فبالفعل حتى استطيع قراءة المتغير خارج الكلاس .. لازم يا إما أعرفه عن طريق

var $var;

أو

public $var;

..

فكرة الجلسات ده مبتكرة و جميلة .. بس هخليها كخط دفاعي أخير .. لأن المفروض أحدد المشكلة فين عشان موش تقابلني في كل كلاس هعمله بعد كده

..

عالعموم وانا نايم :P فكرت كتير في الموضوع ده ..

وتطرق بيا التفكير .. هل الكلاسات مهمتها انها تقوم بالعمليات بدون اخراج نواتج ؟

يعني مثلا اسم الملف المرفوع بعد ما يتم تعديله في الكلاس

وفكرت ان عشان اخرج من المشكلة يستحسن أسمي الملف و أعطي جميع البيانات بنفسي عن طريق بارامترات الكونستراكتور

بس ده مجرد هواجس و موش متأكد من صحتها

..

شكرا جزيلا على الرد وياريت لو فيه حاجة تانية تقدر تساعدني بيها .. أنا في الانتظار ( مع بعض المحاولات :thinking: )

اللهم أعني على ذكرك و شكرك و حسن عبادتك

#4

السلام عليكم

لتوضيح السؤال أكثر .. قمت باختصار الكود قدر ما استطيع و تجميعه بصفحة واحدة

<?php
if(isset($_POST['submit'])){
echo "<div class='articlehead'>".$page_title."</div><br />";


$uploadTiny = new uploadTiny('img','name');

  if ( $uploadTiny === false )
  {
    echo "ERROR <br />";
  }else{
    echo "Why this variable did not appear in below HERE .. ?!!<br />";
    echo $uploadTiny->imageName;
  }

echo "<br /><hr /><br />";
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">
        <p>Image Name : 
        <input type="text" name="name"/>
        <br />	
        Browse : 
		<input type="file" name="img" />
        </p>

		<p><input type="submit" name="submit" value="Upload" />
        <input type="reset" name="reset" value="Reset" /></p>
</form>

<?php
class uploadTiny{
    const UPLOADED_ORIGINAL_DESTINATION = '../images/tiny/';
    var $imageName, $NameField;
    function __construct($UploadingField,$NameField){

    $uploaded_file_path = $_FILES[ $UploadingField ][ 'tmp_name' ]; //The store direction
    $uploaded_file_name = $_FILES[ $UploadingField ][ 'name' ]; //The name of the image
    $uploaded_original_path = self::UPLOADED_ORIGINAL_DESTINATION . $uploaded_file_name;

    $mission = move_uploaded_file( $uploaded_file_path,$uploaded_original_path );

    $imageName = $uploaded_file_name ;
    $NameField = $_POST[$NameField];

	if ($mission == false){
	   echo "no thing is done :(<br />";
	}else{
        echo 'Successful<br />';
        return $imageName;

	}
    }

}
?>

..

وناتج الصفحة هكذا .. للتجربة

http://www.gomhuria.com/admin/tiny_up.php

اللهم أعني على ذكرك و شكرك و حسن عبادتك

#5

مرحبا بك اخي الفاضل ..

اعتقد انه بما انك قد قمت بتعريف المتغيرات في بداية الكلاس، فيجب عليك استخدام المتغيرات داخل الكلاس بالطريقة التالية:

$this->imageName = $uploaded_file_name ;
$this->NameField = $_POST[$NameField];

return $this->imageName;

والله أعلم

تم تعديل هذه المشاركة بواسطة بو غالية في 11 أبريل 2012 في 23:58

2
#6

هههههه تمام جدا يا بوغالية .. ياااااه على سهولة الاجابة مع صعوبة السؤال :blush:

شكرا ليك

فعلا كان ده هو السبب

..

شكرا ليك بو غالية .. و شكرا استاذ بسام

اللهم أعني على ذكرك و شكرك و حسن عبادتك

#7

السلام عليكم

أخى الكريم عليك تعلم أساسيات البرمجة الكائنية أولاً حتى لا تتعثر كثيراً فى مثل هذه الأشياء

على سبيل المثال الثوابت تسخدم طريقة مخالفة للمتغيرات بإستخدام self->CONSTNAME إذا استخدمتها داخل الكلاس , غير طريقة المتغيرات this->Varible

وأيضاً تعريف المتغيرات من public,private,protected واستخدام كل نوع وتمرير البيانات من الأنواع الخاصة والمحمية من خلال الدوال وخلافة من مبادى إستخدام البرمجة الكائنية .

الأمر سهل ألقى نظرة عليه حتى لاتوقفك بعض المبادئ البسيطة عن عملك كثيراً .

2

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#8

حاضر .. بإذن الله يا أستاذ أحمد

بس الصراحة أنا قريت كتير و قريت كذلك من كتب و دورت على أمثلة للكلاسات

بس فيه حاجات موش بتثبت أو موش بتتفهم كويس غير مع التطبيق

..

هو الكلاس اللي عامله أكبر من كده بس أنا اختصرته .. و بالفعل استخدمت فيه ال self->CONSTNAME

..

المشكلة بتكمن في ان الواحد يكون حافظ موش فاهم :S

اني اكون عارف اني أحط المتغير بالشكل ده $this->imageName;

و في نفس الوقت ما أكونش عارف اشمعنى بالشكل ده ؟

وايه الفرق بين اني أحطه $this->imageName; أو أحطه كده $imageName;

..

الشروحات أغلبها شبه بعض و موش بتقول كل حاجة

بشكرك على تعقيبك و هحاول ما اتوقفش عن القراية :)

1

اللهم أعني على ذكرك و شكرك و حسن عبادتك

#9

السلام عليكم

باشكرك ميدو على تقبل النصيحة

إليك رابط دورة للأستاذ يوسف إسماعيل لن تأخذ منك سوى وقت قليل لمشاهدتها وبإذن الله ستتضح لك أمور كثيرة , حقيقاً إستفدت منها كثيراً , بارك الله فى صاحب الدورة وجزاه خيراً

رابط الدورة

دمت بود أخى الكريم

2

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#10

بارك الله فيك .. بالفعل أنا كنت محتاج لشروحات مفصلة أكثر في البرمجة الكائنية و تهتم بالتفاصيل الدقيقة

ليا عودة لحضرتك بعد الانتهاء من الدروس

اللهم أعني على ذكرك و شكرك و حسن عبادتك

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…