Konsolenanwendung - Statuslogger für Ausgaben in der gleichen Zeile - PHP

StatusConsole-Klasse

 1 <?php
 2 
 3 /**
 4  * Created by PhpStorm.
 5  * User: marcel
 6  * Date: 02.02.18
 7  * Time: 14:43
 8  */
 9 class StatusConsole
10 {
11 
12     const CARRIAGE_RETURN = "\r";
13 
14     /**
15      * Text-Buffer
16      * @var string
17      */
18     private $msg;
19 
20     /**
21      * StatusConsole constructor.
22      */
23     public function __construct(){
24         $this -> msg = '';
25     }
26 
27     /**
28      * Gibt einen Text immer in der gleichen Zeile aus und löscht den letzten gespeicherten Text
29      * @param $msg
30      */
31     public function overwrite_text( $msg ){
32 
33         $this -> print_cr();
34         $this -> clear();
35         $this -> print_cr();
36         $this -> msg = $msg;
37         $this -> print_msg();
38 
39     }
40 
41     /**
42      * Löscht den Inhalt auf Grundlage der Zeichenlänge vom alten Text
43      * @return string
44      */
45     private function clear(){
46         return str_repeat( ' ' , strlen( $this -> msg ) );
47     }
48 
49     /**
50      * Wagenrücklauf ausführen
51      */
52     private function print_cr(){
53         echo self::CARRIAGE_RETURN;
54     }
55 
56     /**
57      * Massege ausgeben
58      */
59     public function print_msg(){
60         echo $this -> msg;
61     }
62 
63     /**
64      * Massege zurückgeben
65      * @return string
66      */
67     public function get_msg(){
68         return $this -> msg;
69     }
70 
71 
72 }

Test

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: marcel
 5  * Date: 23.02.18
 6  * Time: 12:48
 7  */
 8 
 9 include ("StatusConsole.php");
10 
11 $text_animation = new StatusConsole();
12 
13 # 10 Durchläufe
14 for( $i = 1 ; $i < 10 + 1 ; $i++ ){
15 
16     # Ausgabe um 1 Sekunde künstlich verlangsamen ( nur für Testzwecke ! )
17     sleep( 1 );
18 
19     # Text erfassen und ausgeben
20     $text_animation -> overwrite_text( " Das ist der {$i}. Durchlauf! " );
21 
22 }
23 
24 # Return am Ende
25 echo PHP_EOL;