file->doWithClose
Runs a block and closes the file afterward.
Target
Signature
1file->doWithClose()Runs a block and closes the file afterward.
file->doWithClose is called with member syntax on a receiver value. file->doWithClose touches paths or filesystem data. Resolve paths deliberately and avoid mixing visitor-provided path fragments with trusted server paths without validation.
In web-serving modes, request-targeted application file access cannot escape the configured document_root. That boundary can come from the .ini file, the --docroot flag used by the LaiRu HTTP server or FPM process, or FastCGI values such as DOCUMENT_ROOT and SCRIPT_FILENAME supplied by nginx or Apache. See the web root directory, FastCGI options, and LaiRu FPM pages for the deployment side of that boundary.
Examples
Basic call
1file('/tmp/example.txt')->doWithClose => { #1->readString }The example assumes a trusted path. Validate or resolve any path built from visitor input.
Read a text file safely
1[2local(path) = '/var/www/html/content/about.html'3local(page) = file(#path)45if(#page->exists) => {6 #page->doWithClose => {7 #1->readString->encodeHtml8 }9}10]`doWithClose` is a useful pattern when the surrounding code should not keep a file handle open.