الفرق بين المراجعتين ل"PHP/echo"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
 
(مراجعة متوسطة واحدة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:echo في PHP}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:البنية <code>echo</code> في PHP}}</noinclude>
 
(PHP 4, PHP 5, PHP 7)
 
(PHP 4, PHP 5, PHP 7)
  
تعرض الدالة ‎echo()‎ سلسلةً نصيةً وحيدة أو عدة سلاسل نصية.
+
تعرض ‎<code>echo</code> سلسلةً نصيةً وحيدة أو عدة سلاسل نصية.
  
=== الوصف ===
+
== الوصف ==
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
 
void echo ( string $arg1 [, string $... ] )
 
void echo ( string $arg1 [, string $... ] )
</syntaxhighlight>تُخرِج echo كل المعاملات، ولا تضيف إليها سطرًا جديدًا بعدها.
+
</syntaxhighlight>تُخرِج <code>echo</code> كل المعاملات، ولا تضيف إليها سطرًا جديدًا بعدها.
  
لا تعدّ echo دالةً بالمعنى الصريح للكلمة إذ تُعد بنيةً من بنى اللُّغة (‎language construct) لذلك فلستَ مجبرًا على إضافة الأقواس لها. على العكس من بنى اللُّغة الأخرى، فإن echo لا تتصرف مثل الدوال لذلك لا يمكن استخدامها في سياق الدوال دائمًا. إذا أردنا استعمال الدالة بأكثر من معامل فلا يتوجب وضع هذه المعاملات ضمن أقواس.
+
لا تعدّ <code>echo</code> دالةً بالمعنى الصريح للكلمة إذ تُعد بنيةً من بنى اللُّغة (‎language construct) لذلك فلستَ مجبرًا على إضافة الأقواس لها. على العكس من بنى اللُّغة الأخرى، فإن <code>echo</code> لا تتصرف مثل الدوال لذلك لا يمكن استخدامها في سياق الدوال دائمًا. إذا أردنا استعمال الدالة بأكثر من معامل فلا يتوجب وضع هذه المعاملات ضمن أقواس.
  
تملك echo شكلًا مختصرًا، إذ يمكن كتابة علامة المساواة = بعد كتابة وسم البداية لشيفرة PHP  مباشرةً. قبل نسخة  ‎PHP 5.4.0 كان يتوجب تفعيل خاصية ‎ short_open_tagحتى نتمكن من استعمال خاصية الكتابة المختصرة لها‎.<syntaxhighlight lang="php">
+
تملك <code>echo</code> شكلًا مختصرًا، إذ يمكن كتابة علامة المساواة <code>=</code> بعد كتابة وسم البداية لشيفرة PHP  مباشرةً. قبل نسخة  ‎PHP 5.4.0 كان يتوجب تفعيل خاصية ‎ <code>short_open_tag</code>حتى نتمكن من استعمال خاصية الكتابة المختصرة لها‎.<syntaxhighlight lang="php">
 
I have <?=$foo?> foo.
 
I have <?=$foo?> foo.
</syntaxhighlight>تختلف echo عن نظيرتها print‎ في قبولها لقائمة من المعاملات وأنها لا تُعيد أي قيمة.
+
</syntaxhighlight>تختلف <code>echo</code> عن نظيرتها <code>[[PHP/print|print‎]]</code> في قبولها لقائمة من المعاملات وأنها لا تُعيد أي قيمة.
  
=== المعاملات ===
+
== المعاملات ==
  
==== arg1 ====
+
=== arg1 ===
 
المعامل الذي نسعى لِعَرضه.
 
المعامل الذي نسعى لِعَرضه.
  
==== … ====
+
=== … ===
 
المعاملات الاختيارية الأخرى التي نرغب بعرضها.
 
المعاملات الاختيارية الأخرى التي نرغب بعرضها.
  
=== القيم المعادة ===
+
== القيم المعادة ==
 
لا تُعاد أي قيمة.
 
لا تُعاد أي قيمة.
  
=== أمثلة ===
+
== أمثلة ==
 
+
المثال 1: مثال بسيط عن <code>echo</code><syntaxhighlight lang="php">
==== المثال 1: مثال بسيط عن echo ====
 
<syntaxhighlight lang="php">
 
 
<?php
 
<?php
 
 
echo "Hello World";
 
echo "Hello World";
  
 
echo "This spans
 
echo "This spans
 
 
multiple lines. The newlines will be
 
multiple lines. The newlines will be
 
 
output as well";
 
output as well";
  
سطر 43: سطر 38:
  
 
echo "Escaping characters is done \"Like this\".";
 
echo "Escaping characters is done \"Like this\".";
 
+
// نستطيع استعمال المعاملات داخل الدالة
نستطيع استعمال المعاملات داخل الدالة //
 
  
 
$foo = "foobar";
 
$foo = "foobar";
 
 
$bar = "barbaz";
 
$bar = "barbaz";
  
 
echo "foo is $foo"; // foo is foobar
 
echo "foo is $foo"; // foo is foobar
  
//يمكن استعمال المصفوفات أيضًا
+
// يمكن استعمال المصفوفات أيضًا
 
 
 
$baz = array("value" => "foo");
 
$baz = array("value" => "foo");
  
سطر 62: سطر 54:
 
echo 'foo is $foo'; // foo is $foo
 
echo 'foo is $foo'; // foo is $foo
  
//يمكن استعمال المتغيرات مباشرة في حال عدماستعمال محارف أخرى
+
//يمكن استعمال المتغيرات مباشرة في حال عدم استعمال محارف أخرى
  
 
echo $foo;          // foobar
 
echo $foo;          // foobar
سطر 75: سطر 67:
  
 
echo <<<END
 
echo <<<END
 
 
This uses the "here document" syntax to output
 
This uses the "here document" syntax to output
 
 
multiple lines with $variable interpolation. Note
 
multiple lines with $variable interpolation. Note
 
 
that the here document terminator must appear on a
 
that the here document terminator must appear on a
 
 
line with just a semicolon. no extra whitespace!
 
line with just a semicolon. no extra whitespace!
 
 
END;
 
END;
  
 
// الشيفرة الآتية غير صحيحة لأننا نحاول معاملة
 
// الشيفرة الآتية غير صحيحة لأننا نحاول معاملة
 
 
// echo كدالة
 
// echo كدالة
 
 
($some_var) ? echo 'true' : echo 'false';
 
($some_var) ? echo 'true' : echo 'false';
  
 
// لكن الأمثلة الآتية ستعمل
 
// لكن الأمثلة الآتية ستعمل
 
 
($some_var) ? print 'true' : print 'false'; // لاحظ أنَّ print هي بنية من بنى اللغة أيضًا
 
($some_var) ? print 'true' : print 'false'; // لاحظ أنَّ print هي بنية من بنى اللغة أيضًا
 
 
                                           // لكنها تسلك سلوك الدوال
 
                                           // لكنها تسلك سلوك الدوال
 
 
                                           // لذا يمكن استعمالها في السياق السابق
 
                                           // لذا يمكن استعمالها في السياق السابق
  
 
echo $some_var ? 'true': 'false'; // يمكننا تغيير ترتيب التعبير البرمجي
 
echo $some_var ? 'true': 'false'; // يمكننا تغيير ترتيب التعبير البرمجي
 
 
?>
 
?>
 
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== ملاحظات ===
+
== ملاحظات ==
 
لمّا كانت ‎echo تعدّ من بنى اللُّغة وليست دالةً بالمعنى الصريح، فلا يمكن استعمالها بواسطة الدوال المتغيرة (variable functions).
 
لمّا كانت ‎echo تعدّ من بنى اللُّغة وليست دالةً بالمعنى الصريح، فلا يمكن استعمالها بواسطة الدوال المتغيرة (variable functions).
  
تلميحة: تتجلى فائدة استعمال معاملات عدة داخل echo على استعمال خاصية دمج السلاسل النصية (concatenation) في أولوية معامل الربط (المعامل .). إذا مُررت عدة معاملات فلا حاجة لتوضيح الأسبقية عبر إضافة الأقواس:
+
تلميحة: تتجلى فائدة استعمال معاملات عدة داخل echo على استعمال خاصية دمج السلاسل النصية (concatenation) في أولوية معامل الربط (المعامل .). إذا مُررت عدة معاملات فلا حاجة لتوضيح الأسبقية عبر إضافة الأقواس:‎<syntaxhighlight lang="php">
 
 
‎<syntaxhighlight lang="php">
 
 
<?php
 
<?php
 
 
echo "Sum: ", 1 + 2;
 
echo "Sum: ", 1 + 2;
 
 
echo "Hello ", isset($name) ? $name : "John Doe", "!";
 
echo "Hello ", isset($name) ? $name : "John Doe", "!";
 
+
</syntaxhighlight>يملك معامل الربط عند خاصية دمج السلاسل النصية درجة أسبقية عالية مقارنة مع معامل الجمع والمعامل الثلاثي لذلك يجب إدراج الأقواس للحصول على السلوك المُراد.<syntaxhighlight lang="php">
 
 
</syntaxhighlight>يملك معامل الربط عند خاصية دمج السلاسل النصية درجة أسبقية عالية مقارنة مع معامل الجمع والمعامل الثلاثي لذلك يجب إدراج الأقواس للحصول على السلوك المُراد.
 
 
 
<syntaxhighlight lang="php">
 
 
<?php
 
<?php
 
 
echo 'Sum: ' . (1 + 2);
 
echo 'Sum: ' . (1 + 2);
 
 
echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!';
 
echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!';
 
  
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== انظر أيضًا ===
+
== انظر أيضًا ==
* print: عرض سلسلة نصية.
+
* <code>[[PHP/print|print]]</code>: عرض سلسلة نصية.
* printf()‎: عرض سلسلة نصية منسقة.
+
* <code>[[PHP/printf|printf()‎]]</code>: عرض سلسلة نصية منسقة.
* flush()‎: تفريغ مخزن مخرج النظام.
+
* <code>[[PHP/flush|flush()‎]]</code>: تفريغ مخزن مخرج النظام.
* صيغة Heredoc.
 
  
=== مصادر ===
+
== مصادر ==
* صفحة echo‎ في توثيق PHP الرسمي.  
+
* [http://php.net/manual/en/function.echo.php صفحة echo‎ في توثيق PHP الرسمي].  
 +
[[تصنيف:PHP]]
 +
[[تصنيف:PHP Function]]
 +
[[تصنيف:PHP String]]

المراجعة الحالية بتاريخ 16:01، 5 أبريل 2018

(PHP 4, PHP 5, PHP 7)

تعرض ‎echo سلسلةً نصيةً وحيدة أو عدة سلاسل نصية.

الوصف

void echo ( string $arg1 [, string $... ] )

تُخرِج echo كل المعاملات، ولا تضيف إليها سطرًا جديدًا بعدها.

لا تعدّ echo دالةً بالمعنى الصريح للكلمة إذ تُعد بنيةً من بنى اللُّغة (‎language construct) لذلك فلستَ مجبرًا على إضافة الأقواس لها. على العكس من بنى اللُّغة الأخرى، فإن echo لا تتصرف مثل الدوال لذلك لا يمكن استخدامها في سياق الدوال دائمًا. إذا أردنا استعمال الدالة بأكثر من معامل فلا يتوجب وضع هذه المعاملات ضمن أقواس.

تملك echo شكلًا مختصرًا، إذ يمكن كتابة علامة المساواة = بعد كتابة وسم البداية لشيفرة PHP  مباشرةً. قبل نسخة ‎PHP 5.4.0 كان يتوجب تفعيل خاصية ‎ short_open_tagحتى نتمكن من استعمال خاصية الكتابة المختصرة لها‎.

I have <?=$foo?> foo.

تختلف echo عن نظيرتها print‎ في قبولها لقائمة من المعاملات وأنها لا تُعيد أي قيمة.

المعاملات

arg1

المعامل الذي نسعى لِعَرضه.

المعاملات الاختيارية الأخرى التي نرغب بعرضها.

القيم المعادة

لا تُعاد أي قيمة.

أمثلة

المثال 1: مثال بسيط عن echo

<?php
echo "Hello World";

echo "This spans
multiple lines. The newlines will be
output as well";

echo "This spans\nmultiple lines. The newlines will be\noutput as well.";

echo "Escaping characters is done \"Like this\".";
// نستطيع استعمال المعاملات داخل الدالة

$foo = "foobar";
$bar = "barbaz";

echo "foo is $foo"; // foo is foobar

// يمكن استعمال المصفوفات أيضًا
$baz = array("value" => "foo");

echo "this is {$baz['value']} !"; // this is foo !

// يؤدي استعمال علامات الاقتباس المفردة لعرض اسم المعامل وليس قيمته

echo 'foo is $foo'; // foo is $foo

//يمكن استعمال المتغيرات مباشرة في حال عدم استعمال محارف أخرى

echo $foo;          // foobar

echo $foo,$bar;     // foobarbarbaz

//يمكن إدراج السلسلة النصية كمجموعة معاملات مفردة كل واحد على حدى أو كمعامل وحيد بإستخدام خاصية دمج السلاسل النصية

echo 'This ', 'string ', 'was ', 'made ', 'with multiple parameters.', chr(10);

echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";

echo <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;

// الشيفرة الآتية غير صحيحة لأننا نحاول معاملة
// echo كدالة
($some_var) ? echo 'true' : echo 'false';

// لكن الأمثلة الآتية ستعمل
($some_var) ? print 'true' : print 'false'; // لاحظ أنَّ print هي بنية من بنى اللغة أيضًا
                                           // لكنها تسلك سلوك الدوال
                                           // لذا يمكن استعمالها في السياق السابق

echo $some_var ? 'true': 'false'; // يمكننا تغيير ترتيب التعبير البرمجي
?>

ملاحظات

لمّا كانت ‎echo تعدّ من بنى اللُّغة وليست دالةً بالمعنى الصريح، فلا يمكن استعمالها بواسطة الدوال المتغيرة (variable functions).

تلميحة: تتجلى فائدة استعمال معاملات عدة داخل echo على استعمال خاصية دمج السلاسل النصية (concatenation) في أولوية معامل الربط (المعامل .). إذا مُررت عدة معاملات فلا حاجة لتوضيح الأسبقية عبر إضافة الأقواس:‎

<?php
echo "Sum: ", 1 + 2;
echo "Hello ", isset($name) ? $name : "John Doe", "!";

يملك معامل الربط عند خاصية دمج السلاسل النصية درجة أسبقية عالية مقارنة مع معامل الجمع والمعامل الثلاثي لذلك يجب إدراج الأقواس للحصول على السلوك المُراد.

<?php
echo 'Sum: ' . (1 + 2);
echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!';

انظر أيضًا

  • print: عرض سلسلة نصية.
  • printf()‎: عرض سلسلة نصية منسقة.
  • flush()‎: تفريغ مخزن مخرج النظام.

مصادر