<?php 
declare(strict_types=1); 
namespace ParagonIE\Corner; 
 
/** 
 * Interface CornerInterface 
 * @package ParagonIE\Corner 
 */ 
interface CornerInterface extends \Throwable 
{ 
    /** 
     * You can override this to change the default value. 
     */ 
    const HELPFUL_MESSAGE = ''; 
 
    /** 
     * You can override this to change the default value. 
     */ 
    const SUPPORT_LINK = ''; 
 
    /** 
     * Returns a more significant message. 
     * 
     * One way to think about this is to treat Throwable::getMessage() as the 
     * subject line and CornerInterface::getHelpfulMessage() as the body of an 
     * email. 
     * 
     * The output should be allowed to contain newline characters, ASCII art 
     * diagrams, etc. Make it helpful for the developer. 
     * 
     * @return string 
     */ 
    public function getHelpfulMessage(): string; 
 
    /** 
     * @param int $linesBefore 
     * @param int $linesAfter 
     * @param int $traceWalk 
     * @return string 
     */ 
    public function getSnippet(int $linesBefore = 0, int $linesAfter = 0, int $traceWalk = 0): string; 
 
    /** 
     * Returns a string containing either an email address or an https:// URL 
     * linking to the most relevant help file possible for this Throwable object. 
     * 
     * If possible, link to a specific section of your project's documentation 
     * (including page anchors, if applicable) to get the developer closer to 
     * the solution to whatever problem they're encountering. 
     * 
     * If this is an exception for which no immediate solution is documented, 
     * the link should take the user to the bug tracker and/or reporting tool 
     * for your project. 
     * 
     * In the case where no public bug tracker is used for the project in question, 
     * an email address (or comma-separated list of email addresses) is acceptable 
     * here too. 
     * 
     * The intent of this method is to give the developer using your project the 
     * quickest possible path to troubleshooting and solving the problem that 
     * they're most likely facing if this Throwable gets thrown. 
     * 
     * @return string 
     */ 
    public function getSupportLink(): string; 
 
    /** 
     * See: self::getHelpfulMessage(). This is the setter counterpart. 
     * Mutates the object (changes its state in place rather than returning a 
     * new object). 
     * 
     * @param string $message 
     * @return CornerInterface 
     */ 
    public function setHelpfulMessage(string $message): CornerInterface; 
 
    /** 
     * See: self::getSupportLink(). This is the setter counterpart. 
     * Mutates the object (changes its state in place rather than returning a 
     * new object). 
     * 
     * @param string $url 
     * @return CornerInterface 
     */ 
    public function setSupportLink(string $url): CornerInterface; 
} 
 
 |