<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fa">
		<id>https://docs.joomlafarsi.com/index.php?action=history&amp;feed=atom&amp;title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7</id>
		<title>برنامه نویسی شی گرا - تاریخچهٔ ویرایش‌ها</title>
		<link rel="self" type="application/atom+xml" href="https://docs.joomlafarsi.com/index.php?action=history&amp;feed=atom&amp;title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7"/>
		<link rel="alternate" type="text/html" href="https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;action=history"/>
		<updated>2026-05-31T12:16:13Z</updated>
		<subtitle>تاریخچهٔ ویرایش‌های این صفحه در ویکی</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2709&amp;oldid=prev</id>
		<title>Mehrabun: مطلب نا تمام</title>
		<link rel="alternate" type="text/html" href="https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2709&amp;oldid=prev"/>
				<updated>2012-02-02T11:01:55Z</updated>
		
		<summary type="html">&lt;p&gt;مطلب نا تمام&lt;/p&gt;
&lt;table class='diff diff-contentalign-right'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='fa'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;نسخهٔ ‏۲ فوریهٔ ۲۰۱۲، ساعت ۱۱:۰۱&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;سطر ۱:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;سطر ۱:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[رده:کدنویسی و گسترش جوملا ]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;{{در حال تکمیل}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[رده:کدنویسی و گسترش جوملا ]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=برنامه نویسی شی گرا در PHP با رویکرد آموزشی برای جوملا=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=برنامه نویسی شی گرا در PHP با رویکرد آموزشی برای جوملا=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l266&quot; &gt;سطر ۲۶۶:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;سطر ۲۶۷:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;{{در حال تکمیل}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''این آموزش ادامه دارد''' &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;منبع : &amp;lt;nowiki&amp;gt; http://docs.joomla.org/Getting_Started_with_Object_Oriented_Programming&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;منبع : &amp;lt;nowiki&amp;gt; http://docs.joomla.org/Getting_Started_with_Object_Oriented_Programming&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mehrabun</name></author>	</entry>

	<entry>
		<id>https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2689&amp;oldid=prev</id>
		<title>Shmata: /* برنامه نویسی شی گرا در PHP با رویکرد آموزشی برای جوملا */</title>
		<link rel="alternate" type="text/html" href="https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2689&amp;oldid=prev"/>
				<updated>2012-01-30T21:22:23Z</updated>
		
		<summary type="html">&lt;p&gt;‏&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;برنامه نویسی شی گرا در PHP با رویکرد آموزشی برای جوملا&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-right'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='fa'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;نسخهٔ ‏۳۰ ژانویهٔ ۲۰۱۲، ساعت ۲۱:۲۲&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;سطر ۱:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;سطر ۱:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[رده:کدنویسی و گسترش جوملا ]] &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=برنامه نویسی شی گرا در PHP با رویکرد آموزشی برای جوملا=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=برنامه نویسی شی گرا در PHP با رویکرد آموزشی برای جوملا=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Shmata</name></author>	</entry>

	<entry>
		<id>https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2679&amp;oldid=prev</id>
		<title>Hamidy در ‏۲۲ ژانویهٔ ۲۰۱۲، ساعت ۱۰:۳۰</title>
		<link rel="alternate" type="text/html" href="https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2679&amp;oldid=prev"/>
				<updated>2012-01-22T10:30:30Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;amp;diff=2679&amp;amp;oldid=2678&quot;&gt;نمایش تغییرات&lt;/a&gt;</summary>
		<author><name>Hamidy</name></author>	</entry>

	<entry>
		<id>https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2678&amp;oldid=prev</id>
		<title>Shmata: /* شی Object */</title>
		<link rel="alternate" type="text/html" href="https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2678&amp;oldid=prev"/>
				<updated>2012-01-21T16:51:16Z</updated>
		
		<summary type="html">&lt;p&gt;‏&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;شی Object&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-right'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='fa'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;نسخهٔ ‏۲۱ ژانویهٔ ۲۰۱۲، ساعت ۱۶:۵۱&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;سطر ۱:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;سطر ۱:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=[[برنامه نویسی شی گرا]] در [[PHP]] با رویکرد آموزشی برای [[جوملا]]=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=[[برنامه نویسی شی گرا]] در [[PHP]] با رویکرد آموزشی برای [[جوملا]]=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[PHP]] یک زبان [[برنامه نویسی شی گرا]] ست و همچنین از ساختار MVC برای پیاده سازی [[جوملا]] استفاده کرده است .&amp;#160; برای توسعه جوملا درک قوی مفاهیم&amp;#160; برنام نویسی شی گرا (OOP) لازم است . در این مقاله سعی داریم دلایل استفاده از Objectها و راههای استفاده از Objectهایی که PHP از آنها استفاده میکند را توضیح دهیم .&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[PHP]] یک زبان [[برنامه نویسی شی گرا]] ست و همچنین از ساختار MVC برای پیاده سازی [[جوملا]] استفاده کرده است .&amp;#160; برای توسعه جوملا درک قوی مفاهیم&amp;#160; برنام نویسی شی گرا (OOP) لازم است . در این مقاله سعی داریم دلایل استفاده از Objectها و راههای استفاده از Objectهایی که PHP از آنها استفاده میکند را توضیح دهیم .&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==شی Object ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;این موضوع برای ما به عنوان برنامه نویسی که قصد&amp;#160; فراگیری برنامه نویسی شی گرا را داریم مهم است که دلایل استفاده از شی گرایی را بدانیم .&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;این موضوع برای ما به عنوان برنامه نویسی که قصد&amp;#160; فراگیری برنامه نویسی شی گرا را داریم مهم است که دلایل استفاده از شی گرایی را بدانیم .&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;قبل از شی گرایی تمام برنامه ها بر اساس توابع (Function) و متغیرها (Variables)&amp;#160; بود . مثلا اگر قرار باشد برنامه محاسبه ارتباط قد و وزن یک شخص BMI یک شخص را بدون استفاده از شی گرایی بنویسیم به سه متغیر $weight و $height و $name نیاز داریم که برای نگهداری وزن و قد و نام شخص مورد استفاده قرار میگیرند . همچنین به یک تابع مثلا calculateBMI() برای محاسبه قد و وزن نیاز داریم که باید پارامترهای $height و $weight را بپذیرد . که به این صورت نوشته میشود.&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;قبل از شی گرایی تمام برنامه ها بر اساس توابع (Function) و متغیرها (Variables)&amp;#160; بود . مثلا اگر قرار باشد برنامه محاسبه ارتباط قد و وزن یک شخص BMI یک شخص را بدون استفاده از شی گرایی بنویسیم به سه متغیر $weight و $height و $name نیاز داریم که برای نگهداری وزن و قد و نام شخص مورد استفاده قرار میگیرند . همچنین به یک تابع مثلا calculateBMI() برای محاسبه قد و وزن نیاز داریم که باید پارامترهای $height و $weight را بپذیرد . که به این صورت نوشته میشود.&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot; &gt;سطر ۱۰:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;سطر ۹:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;مشکل این روش اینست که در صورت تعدد توابع و متغیرها (که عموما در پروژه ها به دفعات مجبور به استفاده از آنها هستیم) قادر به تعقیب کد برنامه نخواهیم بود و برنامه نوشته برای سایر افرادی که قصد توسعه آن را داشتند گیج کننده بود . به این نوع کد نویسی برنامه نویسی '''اسپاگتی''' میگویند از این جهت که خروجی هر تابع ممکن است به عنوان ورودی یا ... در سایر توابع مورد استفاده قرار گیرد که ردیانی کدها را بسیار دشوار می سازد .&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;مشکل این روش اینست که در صورت تعدد توابع و متغیرها (که عموما در پروژه ها به دفعات مجبور به استفاده از آنها هستیم) قادر به تعقیب کد برنامه نخواهیم بود و برنامه نوشته برای سایر افرادی که قصد توسعه آن را داشتند گیج کننده بود . به این نوع کد نویسی برنامه نویسی '''اسپاگتی''' میگویند از این جهت که خروجی هر تابع ممکن است به عنوان ورودی یا ... در سایر توابع مورد استفاده قرار گیرد که ردیانی کدها را بسیار دشوار می سازد .&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==کلاس class==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==کلاس class==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;برای Objectها ایده '''encapsulate''' به منظور تغییر در function ها در داخل یک بسته (package) مطرح شددر واقع این بسته همان کلاس(class)&amp;#160; میباشد. به عنوان مثال پیاده سازی مثال بالا با استفاده از کلاس به صورت زیر خواهد بود :&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;برای Objectها ایده '''encapsulate''' به منظور تغییر در function ها در داخل یک بسته (package) مطرح شددر واقع این بسته همان کلاس(class)&amp;#160; میباشد. به عنوان مثال پیاده سازی مثال بالا با استفاده از کلاس به صورت زیر خواهد بود :&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Shmata</name></author>	</entry>

	<entry>
		<id>https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2677&amp;oldid=prev</id>
		<title>Shmata: /* overriding */</title>
		<link rel="alternate" type="text/html" href="https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2677&amp;oldid=prev"/>
				<updated>2012-01-21T16:48:57Z</updated>
		
		<summary type="html">&lt;p&gt;‏&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;overriding&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-right'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='fa'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;→ نسخهٔ قدیمی‌تر&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;نسخهٔ ‏۲۱ ژانویهٔ ۲۰۱۲، ساعت ۱۶:۴۸&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l188&quot; &gt;سطر ۱۸۸:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;سطر ۱۸۸:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$copier-&amp;gt;copy();&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;$copier-&amp;gt;copy();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;'''این آموزش ادامه دارد''' &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;منبع : &amp;lt;nowiki&amp;gt; http://docs.joomla.org/Getting_Started_with_Object_Oriented_Programming&amp;lt;/nowiki&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ترجمه: [http://forum.joomlafarsi.com/members/26237-shmata شهاب مطاع پور]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{معرفی پشتیبانی}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{کپی رایت}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[رده:مدیریت جوملا]] [[رده:مقالات جوملا]] [[رده:سوالات متداول جوملا]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Shmata</name></author>	</entry>

	<entry>
		<id>https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2676&amp;oldid=prev</id>
		<title>Shmata: صفحه‌ای جدید حاوی '=برنامه نویسی شی گرا در PHP با رویکرد آموزشی برای جوملا= PHP یک زبان [[برنام...' ایجاد کرد</title>
		<link rel="alternate" type="text/html" href="https://docs.joomlafarsi.com/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&amp;diff=2676&amp;oldid=prev"/>
				<updated>2012-01-21T16:43:58Z</updated>
		
		<summary type="html">&lt;p&gt;صفحه‌ای جدید حاوی &amp;#039;=&lt;a href=&quot;/index.php?title=%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C_%D8%B4%DB%8C_%DA%AF%D8%B1%D8%A7&quot; title=&quot;برنامه نویسی شی گرا&quot;&gt;برنامه نویسی شی گرا&lt;/a&gt; در &lt;a href=&quot;/index.php?title=PHP&quot; class=&quot;mw-redirect&quot; title=&quot;PHP&quot;&gt;PHP&lt;/a&gt; با رویکرد آموزشی برای &lt;a href=&quot;/index.php?title=%D8%AC%D9%88%D9%85%D9%84%D8%A7&quot; title=&quot;جوملا&quot;&gt;جوملا&lt;/a&gt;= &lt;a href=&quot;/index.php?title=PHP&quot; class=&quot;mw-redirect&quot; title=&quot;PHP&quot;&gt;PHP&lt;/a&gt; یک زبان [[برنام...&amp;#039; ایجاد کرد&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحهٔ تازه&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=[[برنامه نویسی شی گرا]] در [[PHP]] با رویکرد آموزشی برای [[جوملا]]=&lt;br /&gt;
[[PHP]] یک زبان [[برنامه نویسی شی گرا]] ست و همچنین از ساختار MVC برای پیاده سازی [[جوملا]] استفاده کرده است .  برای توسعه جوملا درک قوی مفاهیم  برنام نویسی شی گرا (OOP) لازم است . در این مقاله سعی داریم دلایل استفاده از Objectها و راههای استفاده از Objectهایی که PHP از آنها استفاده میکند را توضیح دهیم .&amp;lt;br /&amp;gt;&lt;br /&gt;
==شی Object ==&lt;br /&gt;
این موضوع برای ما به عنوان برنامه نویسی که قصد  فراگیری برنامه نویسی شی گرا را داریم مهم است که دلایل استفاده از شی گرایی را بدانیم .&amp;lt;br /&amp;gt;&lt;br /&gt;
قبل از شی گرایی تمام برنامه ها بر اساس توابع (Function) و متغیرها (Variables)  بود . مثلا اگر قرار باشد برنامه محاسبه ارتباط قد و وزن یک شخص BMI یک شخص را بدون استفاده از شی گرایی بنویسیم به سه متغیر $weight و $height و $name نیاز داریم که برای نگهداری وزن و قد و نام شخص مورد استفاده قرار میگیرند . همچنین به یک تابع مثلا calculateBMI() برای محاسبه قد و وزن نیاز داریم که باید پارامترهای $height و $weight را بپذیرد . که به این صورت نوشته میشود.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
function calculateBMI( $height, $weight ) {&lt;br /&gt;
    return $weight / $height;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
مشکل این روش اینست که در صورت تعدد توابع و متغیرها (که عموما در پروژه ها به دفعات مجبور به استفاده از آنها هستیم) قادر به تعقیب کد برنامه نخواهیم بود و برنامه نوشته برای سایر افرادی که قصد توسعه آن را داشتند گیج کننده بود . به این نوع کد نویسی برنامه نویسی '''اسپاگتی''' میگویند از این جهت که خروجی هر تابع ممکن است به عنوان ورودی یا ... در سایر توابع مورد استفاده قرار گیرد که ردیانی کدها را بسیار دشوار می سازد .&amp;lt;br /&amp;gt;&lt;br /&gt;
==کلاس class==&lt;br /&gt;
برای Objectها ایده '''encapsulate''' به منظور تغییر در function ها در داخل یک بسته (package) مطرح شددر واقع این بسته همان کلاس(class)  میباشد. به عنوان مثال پیاده سازی مثال بالا با استفاده از کلاس به صورت زیر خواهد بود :&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
class person&lt;br /&gt;
{&lt;br /&gt;
    var $name;&lt;br /&gt;
    var $height;&lt;br /&gt;
    var $weight;&lt;br /&gt;
 &lt;br /&gt;
    function getBMI() {&lt;br /&gt;
        return $this-&amp;gt;weight / $this-&amp;gt;height;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==نمونه سازی instantiating ==&lt;br /&gt;
برای استفاده از توابع موجود کلاس ها (method) و متغیرهای داخل کلاس , ما باید حتما یک object از نوع آن کلاس ایجاد کنیم . به عنوان مثال اگر شما قصد دارید یک object بسازید که نشان دهنده کلاس person باشد (یعنی با استفاده از آن object بخواهید از متد و متغیرهای داخل کلاس person استفاده کنید) باید به صورت زیر عمل کنید :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
$person = new person();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
به ایجاد یک object از نوع یک کلاس instantiating میگویند چون در واقع یک نمونه instance از آن کلاس است . یک کلاس توسط یک شی مورد دسترسی قرار میگیرد.&lt;br /&gt;
==خصوصیت property ==&lt;br /&gt;
شما با استفاده از object ها میتوانید به مقادیر متغیرهای یک کلاس (properties) را تغییر دهید به این صورت :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
$person-&amp;gt;height = 2;&lt;br /&gt;
$person-&amp;gt;weight = 50;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
همچنین شما میتوانید با استفاده از object توابع (method) ها را فراخوانی کنید :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
$bmi = $person-&amp;gt;getBMI();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==وراثت inheritance==&lt;br /&gt;
در پروژه ها معمولا خیلی از کلاسها شبیه به هم هستند اما مواردی هم وجود دارد که در داخل یک کلاس تفاوتهای زیادی با دیگر کلاسها وجود دارد به عنوان مثال : هم انسانها و هم حیوانات مثل گربه همگی شش دارند برای تنفس . از نظر OOP هر دوی آنها یک متغیر به نام $lung_capacity دارند که بین شان مشترک است ولی گربه دارای دم است که انسانها ندارند پس قاعدتا کلاس حیوانات باید دارای یک متغیر بیشتر به نام $tail_length باشد . پس در پروژه ما کلاس حیوانات تمام خصوصیات کلاس انسانها را دارد ولی با یکسری خصوصیات بیشتر (دم) . به کلاس انسانها '''Parent''' و به کلاس حیوانات '''Child''' یا '''Subclass''' میگوییم.&amp;lt;br /&amp;gt;&lt;br /&gt;
نکته : کلاسهای '''فرزند''' (Child) تمام خصوصیات کلاسهای '''والد''' (Parent) را دارند به علاوه یکسری خصوصیات بیشتر.&amp;lt;br /&amp;gt;&lt;br /&gt;
در [[جوملا]] اکثر کلاس ها فرزند کلاس '''JObject''' هستند. یعنی باید تمام خصوصیتهای کلاس JObject را داشته باشند به علاوه یکسری خصوصیات بیشتر.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
class person extends JObject&lt;br /&gt;
{&lt;br /&gt;
    var $name;&lt;br /&gt;
    var $height;&lt;br /&gt;
    var $weight;&lt;br /&gt;
 &lt;br /&gt;
    function getBMI() {&lt;br /&gt;
        return $this-&amp;gt;weight / $this-&amp;gt;height;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
کلاس JObject دارای متدهای set() و get() است که ما با استفاده از این متدها براحتی میتوانیم کلاس person را تغییر دهیم دقت کنید که ما در کلاس person متدهای set() و get() را نداریم ولی چون کلاس person فرزند کلاس JObject است ما میتوانیم از متدهای JObject نیز استفاده کنیم . به عمل در شی گرایی وراثت میگویند . وراثت(inheritance) با کلمه کلیدی extends مشخص می شود و الگوی آن در مثال بالا مشخص است .&amp;lt;br /&amp;gt;&lt;br /&gt;
کلاس JObject دارای متدهای set() و get() است که ما با استفاده از این متدها براحتی میتوانیم کلاس person را تغییر دهیم دقت کنید که ما در کلاس person متدهای set() و get() را نداریم ولی چون کلاس person فرزند کلاس JObject است ما میتوانیم از متدهای JObject نیز استفاده کنیم . به عمل در شی گرایی وراثت میگویند . وراثت(inheritance) با کلمه کلیدی '''extends''' مشخص می شود و الگوی آن در مثال بالا مشخص است .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
توجه داشته باشید که $this در داخل کلاسها زیاد استفاده میشود  در واقع $this به object جاری اشاره میکند . بنابراین اگر در داخل یک کلاس از &amp;lt;div dir=ltr&amp;gt;$this -&amp;gt; height = 2;  &amp;lt;/div&amp;gt;  استفاده کنیم به این معنی است که خصوصیت height شی جاری برابر 2 ست شده است و وقتی که ما در کد از  &amp;lt;div dir=ltr&amp;gt;$this-&amp;gt;height&amp;lt;/div&amp;gt; استفاده میکنیم به هیچ عنوان درباره مقدار height صحبت نکرده ایم بلکه راجب شی جاری height صحبت کرده ایم .&amp;lt;br /&amp;gt;&lt;br /&gt;
==در مورد اشیا (object)ها بیشتر بدانیم ==&lt;br /&gt;
همانطور که گفتیم اشیا object نامیده میشوند به این دلیل : اگر در زندگی واقعی یک شی مثل یک دستگاه فتوکپی را تصور کنیم یک رابط خارجی دارد (مانند : یک سینی کاغذ و شیشه دستگاه کپی و صفحه کلید و ...)  &amp;lt;br /&amp;gt;&lt;br /&gt;
== متد method==&lt;br /&gt;
یک کلاس به اسم copier داریم , چه عملیاتی را به طور معمول نیازداریم که برروی copier انجام دهیم ؟ یکی از مهم ترین کارهایی که این کلاس باید انجام دهد قابلیت کپی است پس من نیاز به یک متد با قابلیت کپی دارم و اسم آنرا copy میگذارم .&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
class Copier&lt;br /&gt;
{&lt;br /&gt;
    function copy() {&lt;br /&gt;
        echo 'One copy made';&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
اینک این یک کلاس کپی کننده ی کاملا ابتدایی است . به نظر شما چه قابلیتها دیگری برای توسعه این کلاس نیاز داریم ؟ خوب برای توسعه قابلیتهای این کلاس باید یک کلاس فرزند از Copier ایجاد کنیم چون کلاس فرزند تمام قابلیتهای کلاس والد را به ارث میبرد و یک سری قابلیتهای دیگر به آن میافزاید و این همان چیزی است که ما میخواهیم . ما میخواهیم یک کلاس کپی دیگری ایجاد کنیم که آن کلاس تعداد کپی های گرفته شده را در خود نگه میدارد به این منظور به یک property  نیاز داریم تا بتواند این خصوصیت (تعداد کپی های گرفته شده) را در خود حفظ کند بدین ترتیب که هرزمان کپی جدیدی گرفته شد یک واحد به آن اضافه گردد. کد کلاس فرزند کلاس copier به این صورت است :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
class CopierWithCounter extends Copier&lt;br /&gt;
{&lt;br /&gt;
    var $counter;&lt;br /&gt;
 &lt;br /&gt;
    function copy() {&lt;br /&gt;
        $this-&amp;gt;counter++;&lt;br /&gt;
        parent::copy();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
اینک ما یک خصوصیت به نام $counter داریم که تعداد کپی های گرفته شده در خود نگهداری میکند. توجه کنید که در کلاس فرزند (CopierWithCounter) یک متد وجود دارد به نام copy() یک متد دیگر هم با همین نام در کلاس پدر وجود دارد معنی این کار چیست ؟ به کد داخل متد copy() کلاس فرزند توجه نمایید در یک خط آن داریم &lt;br /&gt;
&amp;lt;div dir=ltr&amp;gt;parent::copy(); &amp;lt;/div&amp;gt;&lt;br /&gt;
parent یک کلمه کلیدی در [[PHP]] است که به کلاس پدر یا کلاس والد (parent class) اشاره میکند که در این مثال به Copier اشاره میکند.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
بنابراین ما قابلیت مشابه کلاس Copier را داریم با ابن تفاوت که به ازای هر کپی یک واحد به شمارنده اضافه میکند. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==مقدار دهی اولیه initialize==&lt;br /&gt;
اگر اقدام به trace کردن این کلاس کرده باشد یک سوال برای شما مطرح میشود که مقدار اولیه $counter چقدر است ؟ ما فقط میدانیم که به این متغیر به ازای هر کپی یک مقدار اضافه میشود ولی از مقدار اولیه آن هیچ اطلاعی نداریم . این متغیر نیاز دارد که مقدار دهی اولیه شود (initialize) .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
عمل مقدار دهی اولیه به متغیرهای کلاس توسط '''constructor''' انجام میشود . در واقع کار اصلی constructor همین است (مقدار دهی اولیه به متغیرها). constructorها در PHP4.0  توابعی هم نام با کلاس بودند یعنی مثلا اگر اسم کلاس Copy بود اسم constructor یک تابع به نام copy() میشد اما در PHP5.0 کانستراکتور با تابعی به نام&lt;br /&gt;
&amp;lt;div dir=ltr&amp;gt;__constructor()&amp;lt;/div&amp;gt;&lt;br /&gt;
 مشخص میشود. ما در [[جوملا]] و ادامه این آموزش نیز از&lt;br /&gt;
&amp;lt;div dir=ltr&amp;gt;__constructor()&amp;lt;/div&amp;gt;&lt;br /&gt;
استفاده خواهیم کرد. بنابراین کلاس ما به صورت کد زیر تغییر خواهد کرد .&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
class CopierWithCounter extends Copier&lt;br /&gt;
{&lt;br /&gt;
    var $counter;&lt;br /&gt;
 &lt;br /&gt;
    function __construct() {&lt;br /&gt;
        $this-&amp;gt;counter = 0;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    function copy() {&lt;br /&gt;
        $this-&amp;gt;counter++;&lt;br /&gt;
        parent::copy();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
ما میخواهیم که یک کلاس copier پیشرفته تر ایجاد کنیم . میخواهیم یک کلاس فرزند دیگر ایجاد کنیم . میخواهیم کلاس کپی ای ایجاد کنیم که توانایی کپی کردن نسخه متعددی را داشته باشد . ما نیاز به این داریم که مشخص کنیم چقدر کپی میخواهیم بگیریم ویک راهی که این تعداد را برای ما نگهداری کنید به این منظور متدی به نام setCopies() را اضافه میکنیم .&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
class CopierMultipleCopies extends CopierWithCounter&lt;br /&gt;
{&lt;br /&gt;
    var $copies;&lt;br /&gt;
 &lt;br /&gt;
    function setCopies( $copies ) {&lt;br /&gt;
        $this-&amp;gt;copies = $copies;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
اینک ما توانستیم مشخص کنیم چه تعداد کپی میخواهیم بگیریم .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
در شی گرایی مفهومی به نام '''scope''' وجود دارد که وقتی ما در مورد scope صحبت میکنیم منظورمان محدوده ای است که متغیرها میتوانند دیده و استفاده شوند . به '''کلاسمان''' توجه کنید یک property داریم که $copies (متغیر داخل کلاس) نام دارد همچنین در داخل '''متد''' setCopies نیز یک پارامتر داریم که $copies (متغیر ورودی به متد) نام دارد .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
==overriding==&lt;br /&gt;
اگر یک متد پارامترهایی (متغیر ورودی به متد) داشته باشد مانند $copies در متدبالا . اگر من بخواهم از $copies در داخل آن متد استفاده کنم من باید به آن پارامتر مراجعه کنم ($this) ممکن متغیرهای دیگری در قسمت های مختلف کلاس وجود داشته باشند و حتی ممکن است اسم آن متغیرها $copies باشد. آنها برای ما هیچ اهمیتی ندارند اگر من بخواهم به یک property از شی جاری مراجعه کنم باید از کلمه کلیدی $this استفاده کنم . بنا براین اگر از &lt;br /&gt;
&amp;lt;div dir=ltr&amp;gt; $this -&amp;gt; copies &amp;lt;/div&amp;gt;&lt;br /&gt;
استفاده کنیم به منظورما خصوصیت $copies  است که به شی جاری تعلق دارد.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
متد setCopies یک پارامتر ورودی به نام $copies دارد که در داخل آن شی copiesذخیره میشود. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
همچنین در کنار متد setCopies میخواهیم تعداد کپی های گرفته شده را ذخیره کنیم . توجه داشته باشید که برای کلاس CopierMultipleCopies متد copy() یا constructor ای تعریف نشده است اما بدلیل extends کردن آن از کلاس CopierWithCounter متد copy() و propertyهای دیگر را از کلاس CopierWithCounter به ارث میبرد بنابراین بدون انجام هیچ کار اضافه ما یک Copier با شمارنده داریم .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
قصد داربم همچنان قابلیتهای متد copy() را که اینک قادر به گرفتن کپی های متعدد است توسعه دهیم به این منظور یک متد و یک constructor (که به متغیر ما مقدار اولیه دهد) به کلاسمان اضافه میکنیم .&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
class CopierMultipleCopies extends CopierWithCounter&lt;br /&gt;
{&lt;br /&gt;
    var $copies;&lt;br /&gt;
 &lt;br /&gt;
    function __construct() {&lt;br /&gt;
        $this-&amp;gt;copies = 1;&lt;br /&gt;
        parent::__construct();&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    function setCopies( $copies ) {&lt;br /&gt;
        $this-&amp;gt;copies = $copies;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    function copy() {&lt;br /&gt;
        for ($i = 0; $i &amp;lt; $this-&amp;gt;copies; $i++) {&lt;br /&gt;
            parent::copy();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
در این کد ما دقیقا چه کاری انجام دادیم ؟ در ابتدا ما یک constructor داریم که به متغیر $copies مقدار اولیه 1  را میدهد . بعد ....&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
بناراین ما متد copy() را override کردیم . در داخل متد copy() کلاس CopierMultipleCopies یک حلقه تکرار داریم .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
در خط اول در داخل حلقه تکرار سه بخش مجزا داریم که با semicolon از هم جدا میشوند .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
قسمت اول برای مقدار دهی اولیه(intializing) است ما میخواهیم از $i به عنوان شمارنده استفاده کنیم و لازم است که این متغیر بتواند تعداد کپی ها را در خود نگهداری پس باید به آن مقدار اولیه اختصاص دهیم و به آن مقدار 0 را اختصاص میدهیم .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
قسمت دوم مربوط به شرط(condition) است . قبل از انجام هر عملی در حلقه تکرار for این شرط بررسی میگردد اگر true بود حلقه تکرار اجرا میشوند.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
قسمت آخر افزایش دهنده(increamentor) . این قسمت پس از هربار اجرای حلقه یکبار اجرا میشود.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
آن باید به صورت زیر اجرا شود : &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
•	ساختن یک متغیر و مقدار دهی اولیه آن 0&amp;lt;br /&amp;gt;&lt;br /&gt;
•	چک کردن شرط حلقه &amp;lt;br /&amp;gt;&lt;br /&gt;
•	اجرای دستورات داخل حلقه (ایجاد یک copy)&amp;lt;br /&amp;gt;&lt;br /&gt;
•	سپس مقدار افزاینده به متغیر اضافه میشود و به مرحله دوم میرود.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
شما میتوانید حلقه های تکرار به مراتب پیچیده تری ایجاد کنید . این حلقه تنها یک نمونه آموزشی است .&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
حال میتوانیم از copier استفاده کنیم .ما باید به این منظور از کدهای مانند کدهایی زیر استفاده کنیم :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php &amp;quot; &amp;gt;&lt;br /&gt;
$copier = new CopierMultipleCopies();&lt;br /&gt;
$copier-&amp;gt;copy();&lt;br /&gt;
$copier-&amp;gt;copy();&lt;br /&gt;
$copier-&amp;gt;setCopies( 10 );&lt;br /&gt;
$copier-&amp;gt;copy();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Shmata</name></author>	</entry>

	</feed>