Erste Version von FW_String (String-Klasse für PHP)

Diese Klasse ist zwar Teil meines MVC-Frameworks, kann aber auch problemlos ohne das Framework verwendet werden. Es ist eine String-Klasse für PHP 5, mit der man Strings einfacher verwalten kann. Bisher kann die Klasse folgendes:

  • Strings voranstellen und nachstellen (prepend und append)
  • Die Länge eines Strings zurückgeben
  • Teile des Strings (Substring) zurückgeben
  • Bestimmte Zeichen des Strings zurückgeben
  • String in Großbuchstaben umwandeln
  • String in Kleinbuchstaben konvertieren
  • Den ersten Buchstaben des Strings groß schreiben
  • Den jeweils ersten Buchstaben von allen Wörtern im String groß schreiben
  • String zurücksetzen, neu belegen und per __toString-Interzeptor ausgeben

Ich weiß noch nicht, ob die Klasse Bestandteil des Frameworks bleibt, weil mein Ziel für das FW ja war, alles möglichst ohne Schnick-Schnack zu halten. Und eine String-Klasse ist eigentlich nicht so wichtig, dass sie es verdient hat, aufgenommen zu werden. Wir werden sehen!

Code

Jetzt kommen wir zum programmiertechnischen Teil. Nachfolgend seht ihr den gesamten Code der momentanen Klasse. Ich habe schon alles kommentiert.

/**
 * @author Simon H.
 * @version 0.5
 * @package MVC-Framework
 *
 * Die Klasse vereinfacht das Arbeiten mit Strings.
 */
class FW_String
{
  /**
   * @access protected
   * @var string string
   *
   * Speichert den String
   */
  protected $string = "";

  /**
   * @access public
   * @param string string
   *
   * Konstruktor setzt den String
   */
  public function __construct($string = "")
  {
    $this->string = (string)$string;
  }

  /**
   * @access public
   * @param string string
   * @return FW_String Fluent Interface
   *
   * Diese Methode fügt dem String einen anderen String hinten an.
   * Dabei ist es möglich, dass direkt ein String übergeben wird, oder ein FW_String.
   */
  public function append($string)
  {
    if($string instanceof FW_String)
    {
      $string = $string->get();
    }
    $this->string .=  (string)$string;
    return $this;
  }

  /**
   * @access public
   * @param string string
   * @return FW_String Fluent Interface
   *
   * Diese Methode fügt dem String einen anderen String vorne an.
   * Dabei ist es möglich, dass direkt ein String übergeben wird, oder ein FW_String.
   */
  public function prepend($string)
  {
    if($string instanceof FW_String)
    {
      $string = $string->get();
    }
    $this->string =  (string)$string.$this->string;
    return $this;
  }

  /**
   * @access public
   * @return string
   *
   * Gibt den String zurück
   */
  public function __toString()
  {
    return $this->get();
  }

  /**
   * @access public
   * @return string
   *
   * Gibt den String zurück.
   */
  public function get()
  {
    return $this->string;
  }

  /**
   * @access public
   * @param string string
   * @return FW_String Fluent Interface
   *
   * Weist dem String einen neuen Wert zu.
   * Dabei ist es möglich, dass direkt ein String übergeben wird, oder ein FW_String.
   */
  public function set($string)
  {
    if($string instanceof FW_String)
    {
      $string = $string->get();
    }
    $this->string = (string)$string;
    return $this;
  }

  /**
   * @access public
   * @return FW_String Fluent Interface
   *
   * Setzt den String auf "" zurück.
   */
  public function reset()
  {
    $this->string = "";
    return $this;
  }

  /**
   * @access public
   * @return integer
   *
   * Gibt die Länge des Strings zurück.
   */
  public function getLength()
  {
    return strlen($this->string);
  }

  /**
   * @access public
   * @param integer start
   * @param integer length
   * @return integer
   *
   * Gibt einen Ausschnitts des Strings zurück. Wird mit $start und $length definiert.
   */
  public function getSubstring($start, $length = 1)
  {
    if($this->getLength() < = $start)
    {
      throw new Exception("Der Startwert muss kleiner als die Stringlänge sein!");
    }
    return substr($this->string, $start, $length);
  }

  /**
   * @access public
   * @param integer position
   * @return string
   *
   * Gibt das Zeichen an der Stelle $position zurück.
   */
  public function getChar($position)
  {
    try
    {
      return $this->getSubstring($position, 1);
    }
    catch(Exception $e)
    {
      throw $e;
    }
  }

  /**
   * @access public
   * @return FW_String Fluent Interface
   *
   * Wandelt den String in Großbuchstaben um
   */
  public function toUpper()
  {
    $this->string = strtoupper($this->string);
    return $this;
  }

  /**
   * @access public
   * @return FW_String Fluent Interface
   *
   * Wandelt den String in Kleinbuchstaben um
   */
  public function toLower()
  {
    $this->string = strtolower($this->string);
    return $this;
  }

  /**
   * @access public
   * @param bool only_first
   * @return FW_String Fluent_Interface
   *
   * Macht den ersten Buchstaben zu einem Großbuchstaben.
   */
  public function firstBig($only_first = true)
  {
    if($only_first)
    {
      $this->toLower();
    }    
    $this->string = ucfirst($this->string);    
    return $this;
  }

  /**
   * @access public
   * @param bool only_first_letter_big
   * @return FW_String Fluent Interface
   *
   * Macht jeweils den ersten Buchstaben von jedem Wort zu einem Großbuchstaben.
   */
  public function CapitalLetters($only_first_letter_big = true)
  {
    if($only_first_letter_big)
    {
      $this->toLower();
    }  
    $this->string = ucwords($this->string);

    return $this;
  }
}

Durch folgende Codepassagen ermögliche ich es, dass man an eine Methode entweder einen PHP-String oder einen FW_String übergeben kann:

public function set($string)
  {
    if($string instanceof FW_String)
    {
      $string = $string->get();
    }
    $this->string = (string)$string;
    return $this;
  }

Das findet sich auch in den Methoden prepend und append wieder.

Was fehlt noch?
Habe ich etwas wichtiges vergessen? Dann teilt mir das bitte in den Kommentaren mit!

1 Star2 Stars3 Stars4 Stars5 Stars (Wurde noch nicht bewertet)
Loading...


6 Kommentare zu “Erste Version von FW_String (String-Klasse für PHP)”

  1. Du oller Ideenklauer 😉

  2. Oh sorry 😀

    Ich wusste doch, dass ich sowas schon wo gesehen hab, aber nichtmehr wo.

    Aber unsere Klassen sind sowieso von Grund auf verschieden

  3. Vom Grundaufbau ja und der Ausführung ja. Aber ob das für den Nutzer dann eine Rolle spielt ist fraglich.

    Um ganz ehrlich zu sein, bin ich eher überrascht, dass noch jemand außer mir auf die Idee einer String-Klasse kommt 😀

  4. Die Idee hatten schon viele vor uns und auch die Nachfrage ist vorallem von Programmierern, die solche Klassen von C++ kennen, besonders groß.

    Was hältst du denn von meiner Klasse?

  5. Sorry, habe mir den Code noch nicht genauer angeschaut. Mache ich vielleicht morgen mal 😉

  6. Die aktuellste Version meines HMVC-Frameworks erhaltet ihr ab sofort immer hier: http://www.net-developers.de/blog/2011/02/13/download-info-shfw-hmvc-framework-in-php/

Hinterlasse einen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

»Informationen zum Artikel

Autor: Simon
Datum: 14.03.2009
Zeit: 14:23 Uhr
Kategorien: Mein MVC-Framework
Gelesen: 6946x heute: 2x

Kommentare: RSS 2.0.
Diesen Artikel kommentieren oder einen Trackback senden.

»Meta