PHP doğal bir String sınıfı yapmak için nasıl

4 Cevap php

Hai. Ben bu basit dize sınıf yapıyordu ve bunu yaparken daha doğal bir yol olup olmadığını merak ediyordum.

class Str{
    function __construct($str){
        $this->value = $str;
        $this->length = strlen($str);
        ..
    }

    function __toString(){
        return $this->value;
    }
    ..
}

yani şimdi ben bu gibi kullanmak zorunda:

$str = new Str('hello kitty');
echo $str;

Ama bu parantez çok 'doğal' görünmüyor. Benzer böyle bir şey, ya da mümkün olsaydı Yani ben merak ediyorum.

$str = new Str 'hello kitty'; # I dont believe this is possible although this is preferred.

$str = new Str; # get rid of the construct param.
$str = 'value here'; #instead of resetting, set 'value here' to Str::$value??

İkinci yöntemde, ben muhtemelen değişken bing yeniden kurmak ve bunun yerine Sıfırlanmasını arasında Str bu set :: $ değer olduğunu yakalamak bir yolu var mı? Etrafa düşündüm ve ben __ imha yöntemidir kadar gelebilir yakın var. ama tahrip edildiğini bilmek hiçbir şekilde yoktu. Bu mümkün mü yoksa benim zaman harcıyorsun ki?

4 Cevap

PHP gevşek yazıldığında beri dizeleri kullanarak doğal yolu sadece onları kullanarak, iyi, çünkü, hiçbir natural string sınıf vardır. Ancak, PHP5.3 olarak kesin belirlenmiş scalars sağlar SPL bir uzantısı vardır:

Ancak, bu uzantı değiştirmek için deneysel ve tabi işaretli olduğunu akılda tutmak. Şu an itibariyle, Windows üzerinde de mevcut değildir.

Ayrıca denemek isteyebilirsiniz https://github.com/nikic/scalar_objects

Bu uzantı belirli bir ilkel türü (dize, dizi, ...) için yöntem çağrıları işleyen bir sınıfı kaydetmek için yeteneği uygular. Gibi bu) ($ str-> uzunluğu gibi API'lerini uygulama sağlar.

  1. Bu parantez olmadan PHP işlevleri çağırmak için imkansız.
  2. Sonraki metodu string başvuru değişecektir.

Neden sizin için doğal görünmüyor? Java ile aynı yoldur.

Bu yararlı olabilir:

php-string

I'm afraid to tell you that you won't have any luck with either of both.
$str = new Str 'hello kitty'; will end up in fatal error and though the second method is valid it doesn't do what you intend but rather reassign a native string.

Eğer bir sarıcı bir yerli türü araound olmasını isterim neden sorabilir miyim?

Ayrıca bakınız: https://github.com/alecgorge/PHP-String-Class

İyi bir dize sınıfı