PHP bir işlev bildirmenin doğru yolu?

4 Cevap

Ben php işlevlerini bildirmek hakkında gerçekten net değilim, bu yüzden bu bir deneyin verecektir.

getselection();

function getselection($selection,$price)
{
global $getprice;
switch($selection)
{
  case1: case 1:
		echo "You chose lemondew <br />";
		$price=$getprice['lemondew'].'<br>';
		echo "The price:".$price;
	break;

Ben bu yanlış yapıyorum, lütfen bana bildirin, ben bu doğru şekilde yapmak istiyorum; Buna ek olarak, php.net örnekler vardır ama onlar bir newbi için karmaşık tür, ben yanan için teşekkür ederim, ben onların belgelerine kullanmaya başlayacak yetkin olunca sanırım.

Ayrıca beni bu kadar net yardımcı olabilecek linkler verin?

4 Cevap

Sizin örnek benim için yeterince geçerli gibi görünüyor.

foo('bar');
function foo($myVar)
{
  echo $myVar
}
// Output: bar

See this link for more info on user-defined functions.

Eğer makul bir başlangıç ​​yaptı. Şimdi tüm yapmanız gereken gereksiz case 1:, bir } ile switch deyimi kapatın ve daha sonra başka bir ile function kapatın kaldırmak olduğunu }. Ben global dizi $getprice Söz gösterilen kodunuzu tanımlı değil varsayalım.

Onları aramadan önce işlevlerini bildirmek için iyi bir uygulamadır. Bu kod seyrek taşkınlıklarını önlemek olacak.

Numune temelde (bu Asaf parantez kapatma bahseder ne dışında, çalışan yani) geçerli bir işlev tanımı, ancak takip etmez best practices.

  • Adlandırma: bir isim, iki veya daha fazla kelime kullanın camelCase veya underscores_to_delineate_words oluşuyorsa. Hangisini kullanmak bir çok uzun tutarlı konum olarak önemli değildir. De yaklaşık Alex'in soruya bakın PHP naming conventions.
  • Iyi bir isim Toplama: a "olsun" önek "getter" veya "accessor" anlamına gelir; formu "getThing" herhangi bir yöntem veya işlev şey dönmek ve hiçbir işlev veya nesnenin dışında görünür etkiler olmalıdır. O seçildi öğenin adını ve fiyatını yazdıran beri örnek işlevi daha iyi, "printSelection" veya "printItem" denebilir.
  • Globaller: Genel olarak, globals cause problems. Değişkene bir sınıfın statik bir üye ya da bir nesnenin bir örneğini üye olun: Bir alternatif sınıfları veya nesneleri kullanmaktır. Başka bir alternatif çok fazla parametre ile bir işlev çok okunabilir olmasa, işlevine ek bir parametre olarak veri geçmektir.
  • Anahtarlar her zaman en iyi seçim değildir, çok kullanışlıdır ama. Numunede, $selection kolayca bir öğenin adı yerine bir sayı tutun olabilir. Bu anahtarları kullanarak bir alternatif işaret: Bir dizi (bu arada, bu Python nasıl yapıldığını olan) içine bir dizin kullanın. Durumlarda aynı kodu var ama kullanılan değerler farklılık varsa, diziler gitmek için yoludur. Eğer nesneleri kullanarak iseniz, o zaman polymorphism gitmek için yoludur - ama bu kendi başına bir konu.
  • $price parametresi hiçbir amaca hizmet etmek için görünür. Eğer fonksiyon, fiyat dönmek bir return deyimi kullanmak istiyorsanız.
  • Eğer işlevi çağrıldığında, herhangi bir argüman geçmek ihmal. Bu uyarılar ve neden olacaktır, ama çalışacaktır.